Problema com 2 comparações de ifs

Pessoal, estou fazendo uns testes com os principios da OO e a idea é de que o carro não ande caso alguma porta esteja aberta e caso esteja, freie na hora e fique a 0 rpm.
na aplicação, criei apenas 2 objetos que representam as portas da frente e as de tras,porem quando chego na hora de testar no Main, ele acaba andando ou não reiniciando, mesmo eu especificando tudo.

(CLASSE PORTAS)

package oo;

public class Portas {
boolean portasDaFrente = true;
boolean PortasDeTras = true;
}

(CLASSE MOTOR)

public class Motor {
boolean ligado = false;
double fatorInjecao = 1;

int giros () {
	if (!ligado) {
		return 0;
	}else {
	return (int) Math.round(fatorInjecao * 3000);
	}
	}

}

(CLASSE CARRO) (aonde provavelmente esta o erro)
package oo;

public class Carro {

Motor motor = new Motor();
Portas portas = new Portas();

void acelerar () { /// é nessa parte aonde eu acho que esta o erro
if (portas.portasDaFrente == true && portas.PortasDeTras == true) {
motor.fatorInjecao += 0.4;
System.out.println(“as portas estão fechadas”);
}else if (portas.portasDaFrente == false || portas.portasDaFrente == false){
motor.fatorInjecao -= motor.fatorInjecao;
System.out.println(“as portas estão abertas haha”);
}
}

void frear () {
if (motor.fatorInjecao < 0) {
motor.fatorInjecao += 0.4;
}else {
motor.fatorInjecao = 0 ;
}
}

//true para fechadas
//false para abertas
boolean fecharPortasDafrente () { // fechadas
return portas.portasDaFrente = true;
}

boolean abrirPortasDaFrente () { //abertas
return portas.portasDaFrente = false;
}

boolean fecharPortasDeTras () {
return portas.PortasDeTras = true;
}

boolean abrirPortasDeTras () {
return portas.PortasDeTras = false;
}

String verificarPortasDaFrente () {
if (portas.portasDaFrente == true) {
return “portas da frente estão fechadas”;
}else if (portas.portasDaFrente == false) {
return “as portas da frente estão abertas”;
}else
return null;
}
String verificarPortasDeTRAS () {
if (portas.PortasDeTras == true) {
return “portas de tras estão fechadas”;
}else if (portas.PortasDeTras == false) {
return “as portas de tras estão abertas”;
}else
return null;
}

void Ligar() {
motor.ligado = true;
}
void desligar () {
motor.ligado = false;
}
boolean estaLigado() {
return motor.ligado;
}
}

(CLASSE MAIN)
package oo;
public class CarroTeste {
public static void main(String[] args) {

		Carro c1 = new Carro();
		c1.Ligar();
		System.out.println(c1.estaLigado());
		c1.abrirPortasDeTras();
		System.out.println(c1.verificarPortasDeTRAS());
		System.out.println(c1.motor.giros());**// mesmo com portas abertas, ele continua com velocidade??**
	}	
}

A falha está nessa parte, porquê primeiro você liga o carro então sempre vai cair no else, assim retornando o valor 3000, já que o fatorInjecao é 1 e está sendo multiplicado por 3000.

void acelerar () {
    if (portas.portasDaFrente && portas.PortasDeTras) {
        motor.fatorInjecao += 0.4;
        System.out.println(“as portas estão fechadas”);
    } else {
        motor.fatorInjecao -= motor.fatorInjecao;
        System.out.println(“as portas estão abertas haha”);
    }
}

fiz as alterações e removi os ifs do metodo “acelerar” e coloquei no metodo giros, porem não funcionou

(inclui o objeto portas na classe)

public class Motor {
boolean ligado = false;
double fatorInjecao = 1;

Portas portas = new Portas();


int giros () {
	if (!ligado) {
		return 0;
	}else if (portas.portasDaFrente == false || portas.PortasDeTras == false) {
		return 0;
	}else {
		return (int) Math.round(fatorInjecao * 3000);
	}
		
}

}

resolvido, acabei usando o metodo get e criando uma nova variavel na classe Carro para saber se o carro esta ligado ou desligado