Gente realmente estou com muita dúvida em realizar heranças e sobrescrita de métodos… ao fazer esse código bati cabeça me soquei fiz de tudo mais continuo com dúvida. alguem poderia me ajudar, o objeto foi criar a super classe Carro e as sub-classes CarroAutomatico e Carro Manual.
Qual seria a forma correta, peço por favor ajuda pq estou quebrando cabeça!
A dúvida é: Se eu criasse velocidade e cambio na classe pai, ao encapsular, como eu iria fazer essa linha nas sub-classes:
this.velocidade += velocidadeAumentada;
Segue o código:
[code]
public class Carro{
private String cor;
private int portas;
public Carro(String cor, int portas){
this.cor = cor;
this.portas = portas;
}
public void Acelerar(){
}
}
//--------------
public class CarroManual extends Carro{
private int velocidade = 0;
private int cambio = 0;
public CarroManual(String cor, int portas) {
super(cor, portas);
}
public void Acelerar(int velocidadeAumentada, int cambio){
this.cambio = cambio;
this.velocidade += velocidadeAumentada;
if (this.velocidade <= 50 && this.cambio == 1){
System.out.println("Sucesso!");
}
else {
System.out.println("Falhou!");
}
}
public String toString(){
return "A velocidade é "+this.velocidade+" e a marcha atual é "+this.cambio+"";
}
}
//-----------------------------
public class CarroAutomatico extends Carro{
private int velocidade = 0;
private int cambio = 0;
public CarroAutomatico(String cor, int portas) {
super(cor, portas);
}
public void Acelerar(int velocidadeAumentada){
this.cambio = cambio;
this.velocidade += velocidadeAumentada;
if (this.velocidade <= 50){
this.cambio++;
System.out.println("Sucesso!");
}
}
public String toString(){
return "A velocidade é "+this.velocidade+" e a marcha atual é "+this.cambio+"";
}
Hmmm, e verdade.,… eu li cor e portas e entendi velocidade e cambio hehehe
Mas vc faria o que eu disse acima… vc deveria criar métodos protected ou, melhor ainda, cria-los private e usar metodos getters e setters, veja:
[code]
public class Carro{
private String cor;
private int portas;
private int velocidade = 0;
private int cambio = 0;
public Carro(String cor, int portas, int velocidade, int cambio) {
this.cor = cor;
this.portas = portas;
this.velocidade = velocidade;
this.cambio = cambio;
}
public String getCor() {
return cor;
}
public int getPortas() {
return portas;
}
public int getVelocidade() {
return velocidade;
}
public int getCambio() {
return cambio;
}
}[/code]
e no toString faria assim:
public String toString(){
return "A velocidade é "+getVelocidade() +" e a marcha atual é "+getCambio();
}
Lembre-se de que você terá que sobrescrever os métodos getters e setters nas subclasses. Se não o fizer, o método toString irá retornar os valores herdados da superclasse.