:?: duvida sobre herança

12 respostas
P

ola a todos, pessoa gostaria de uma ajuda.
seguinte sou estudante de ciencias da computação e comecei agora no 3º semestre ter linguagem de programação orientada a objetos. como linguagem para a didca da materia esta sendo usada a java e o compilador o netbeans. e to fazendo um algoritmo usando extends. só que quando uso o extends nada é extendido :confused: vo escreve o algoritmo aqui e vcs me digam aonde estou errando :x

package pratica02;

public class Main {

   
    public static void main(String[] args) {
        Carro c = new Carro();
        Avião v = new Avião();
        Patins p = new Patins();

    }

}
package pratica02;


public class Veiculo {
 
 private int QtdeRodas;
 private String TipoMotor;

 public Veiculo() {
}

    public int getQtdeRodas() {
        return QtdeRodas;
    }

    public void setQtdeRodas(int QtdeRodas) {
        this.QtdeRodas = QtdeRodas;
    }

    public String getTipoMotor() {
        return TipoMotor;
    }

    public void setTipoMotor(String TipoMotor) {
        this.TipoMotor = TipoMotor;
    }
}
package pratica02;


public class Carro extends Veiculo {
 
private int QtdeRoda;

 public Carro() {
    }

    public int getQtdeRoda() {
        return QtdeRoda;
    }

    public void setQtdeRoda(int QtdeRoda) {
        this.QtdeRoda = QtdeRoda;
    }

}
package pratica02;

    public Patins() {
    }

}
package pratica02;

public class Avião extends Veiculo {

 private int QtdePoltronas;

 public Avião() {
    }

    public int getQtdePoltronas() {
        return QtdePoltronas;
    }

    public void setQtdePoltronas(int QtdePoltronas) {
        this.QtdePoltronas = QtdePoltronas;
    }

}

patins, avião e carro eram para herdar td de veiculo, mas nao herda :confused: . alguem poderia me apontar o meu erro?
obrigado e aguardo respostas :smiley:

editado e formatado desculpe xD

12 Respostas

moacirjava

Pq vc diz que nada é estendido?

P

com o extends era pras classe carro, avião e patins pegar os atributos de veiculo correto?

mas num pega, ou sera algum tipo de bug do netbeans ?

ou to errado ou errei em algo :confused:

J

Atributo privado não é herdado pela subClasse

berg.pb

como o JFanning disse, atributos privados só são observados pela propria classe.
se vc quiser q as subclasses alterem estes atributos, deixe eles como protected.

agora, atraves dos métodos de acesso (get/set), se estes são publicos, não importa o tipo de acesso dos attribytos.

ou seja,
mesmo se o atribto for private, se o metodo q acessa for public, vc pode acessar ATRAVES DO METODO.

abraços

P

mesmo tirando o private dos atributos o netbeans nao consegue extender os atributos de veiculo as outras classes :frowning:

danielbussade

Olá você tirou o private, e colocou qual?

ftabah

falta o super(); nos construtores tb…

P

daniel tirei os privates da classe veiculo.

P

super ()

o.0 ainda nao estudei isso, o que seria e coomo funciona ?

ftabah

pauloh182:
super ()

o.0 ainda nao estudei isso, o que seria e coomo funciona ?

quando você usa um construtor de uma classe que usa herança o super é necessário para chamar o construtor da classe “pai”. ex:

public class Pai{

protected int numero;

public Pai(){

numero=0;

}

}

public class Filho extends Pai{

public Filho(){

super();

}

}

o super fará com que o numero (int compartilhado apenas com o Pai e seus herdeiros) seja iniciado como 0.
entendeu?

abs

adriano_si

o super() não é necessário para concretizar herança… basta o extends e pronto… cara, coloque seus atributos como protected e as classes filhas já devem enxergá-los… ah sim… patins alí não é uma classe, é um construtor vagando no espaço…

Falows :wink:

danielbussade

ftabah:
pauloh182:
super ()

o.0 ainda nao estudei isso, o que seria e coomo funciona ?

quando você usa um construtor de uma classe que usa herança o super é necessário para chamar o construtor da classe “pai”. ex:

public class Pai{

protected int numero;

public Pai(){

numero=0;

}

}

public class Filho extends Pai{

public Filho(){

super();

}

}

o super fará com que o numero (int compartilhado apenas com o Pai e seus herdeiros) seja iniciado como 0.
entendeu?

abs

Olá, você não precisa escrever o super(), o compilador Java irá colocar um para você automaticamente.

Valeu

Criado 21 de abril de 2009
Ultima resposta 22 de abr. de 2009
Respostas 12
Participantes 7