Pensando analogicamente, a classe A é o pai … a B é o filho e a C é o neto porém … A pode ser pai de B e de C então você faz
Class ClasseC extends ClasseA {
...
Se ClasseC e ClasseB não necessitarem de conversar entre si tanto faz se forem publicas ou não … mais se precisarem elas tem de ser publicas … ai vocês faz elas publicas e seus atributos privados ué…
Novamente… desculpa se eu estou falando merda… eu só to tentando ajudar ;D
[quote=eos]Pessoal como eu uso um atributo por herança na 3º Classe?
Por exemplo Classe B para usar um atributo de Classe A usa:
super(atributo1, atributo2);
[/quote]
Não, isso é para chamar o construtor da classe base.
Para usar um atributo da classe base, você o utiliza como se fosse um atributo normal, na classe filha. Desde que ele seja visível: public, protected ou default.
Você só consegue usar um construtor da classe pai. Não tem como pular construtores.
Para o caso dos atributos, simplesmente use-os, como se fossem declarados na classe C.
[quote=dedejava][quote=jayrmotta]Bom, desculpe se eu estou falando abobrinha mais eu penso que você pode fazer 2 coisas…
Ou você faz essa classe extensao da classe A.
Ou você deixa a classe A como publica e instancia objetos.
Se ajudei vlw… se não … sorry … sou novo hehe ^^ :D[/quote]
É abrobrinha e gambi.
extends A porque pode não ser viável.
Deixar como public é uma má prática de programação (não só a OO).[/quote]
Pode até ser “abrobrinha” e “gambi” porém eu tentei ajudar o cara e não ocupei o tópico criticando, tu quer comprar briga ou sei la o que baixa um joguinho de net compra uma espada e sai batendo… aqui é pra quem quer aprender mais… se você sabe mais bom pra você … isso nunca indicou direito de ofender ninguem. Se eu nao tenho “boas práticas” como você, me dei mal mais ainda assim tentei ajudar e se ele conseguiu provavelmente ficou muito mais satisfeito com meu comentario infame do que com sua critica construtiva.
nós podemos utilizar um método de uma classe pai que foi sobrescrito na classe filha através do super, não podemos?
Exemplo
class Pai {
public void escrever() {
System.out.println("Método da classe pai");
}
}
class Filha extends Pai {
public void escrever() {
super.escrever();
System.out.println("Método da classe filha");
}
}
public class TestePaiFilha {
public static void main(String[] args) {
Filha objFilha = new Filha();
objFilha.escrever();
}
}
Nesse caso, teremos como saída:
“Método da classe pai”
“Método da classe filha”
[quote=GustavoLaguna]Estou com uma dúvida na cabeça agora…
nós podemos utilizar um método de uma classe pai que foi sobrescrito na classe filha através do super, não podemos?
Exemplo
class Pai {
public void escrever() {
System.out.println("Método da classe pai");
}
}
class Filha extends Pai {
public void escrever() {
super.escrever();
System.out.println("Método da classe filha");
}
}
public class TestePaiFilha {
public static void main(String[] args) {
Filha objFilha = new Filha();
objFilha.escrever();
}
}
Nesse caso, teremos como saída:
“Método da classe pai”
“Método da classe filha”[/quote]
Exatamente, belo ponto de vista. O que eu quis dizer la em cima é que se como você exemplificou as Class defaults ele poderia tanto Extender a classe C da A quanto instanciar objetos para chamalas.
Ex:
____________ClasseA
______ClasseB______ClasseC
Só que ai a relação de herança de B para C some… ai só instanciando mesmo! Estou errado?