Boa tarde! Vamos direto ao ponto. Suponhamos que eu precise criar várias classes que derivam da superclasse Carro. Os métodos comuns eu posso fazer com uma interface extremamente simples, quanto a isso não há dúvida. Mas e os atributos? Uma interface seria muito útil pra métodos comuns como liga(), desliga(), buzina(), abrePorta(). Mas todo carro (nesse caso) tem pneus, portas, lataria, motor. O que é aconselhável / prático? Criar uma superclasse abstrata pra criar vários carros através dela? Exemplo abaixo:
abstract class Carro {
String nome, marca, cor; //até aqui os atributos me servem bem com herança de classe
Boolean ligado = false;
/*a partir daqui começa a ficar tenso, porque terei que reescrever todos os métodos a partir da necessidade de cara carro
o que não ia acontecer se pudesse usar uma interface nesse caso. Mas ela não guarda atributos *LOOP ETERNO NA MINHA CABEÇA rs*
*/
boolean liga() {
if (ligado == false) {
ligado = true;
}
return true;
}
//E por aí vai....
}
Espero que tenham conseguido me compreender.
Abraço.