Leonardo,
você não pode chamar diretamente métodos ou construtor de uma subclasse a
partir de uma superclasse. Imagine, no seu exemplo, se você criar uma outra
subclasse de DadosAluno, por exemplo: DadosPessoais. Desta forma, dentro de
DadosAluno você não teria como saber se a subclasse é Notas ou
DadosPessoais. A forma correta de fazer com que uma superclasse acesse algo
de uma subclasse é o que chamamos de polimorfismo. Isso é legal e uma das
grandes vantagens do uso de herança. Por exemplo:
public abstract class PoligonoRegular {
private int lados;
private int tamanhoDoLado;
private int x;
private int y;
protected PoligonoRegular(int lados, int tamanhoDoLado, int x, int y) {
this.lados = lados;
this.tamanhoDoLado = tamanhoDoLado;
this.x = x;
this.y = y;
}
public abstract void desenha();
public void desenha2() {
System.out.println("Desenhando poligono de " + lados + "
lados.");
desenha();
System.out.println("Pronto!");
}
}
Note que defini o método desenha() como abstrato. Aí é que se encontra o
polimorfismo. Se, por acaso, eu resolver criar duas classes que extendam
PoligonoRegular: Triangulo e Quadrado. Só terei que implementar o método
desenha():
public class Triagulo {
public Triagulo(int tamanhoDoLado, int x, int y) {
super(3, tamanhoDoLado, x, y);
}
public void desenha() {
// AQUI EU COLOCO O QUE PRECISAR PRA DESENHAR O TRIANGULO!
}
}
public class Quadrado {
public Quadrado(int tamanhoDoLado, int x, int y) {
super(4, tamanhoDoLado, x, y);
}
public void desenha() {
// AQUI EU COLOCO O QUE PRECISAR PRA DESENHAR O QUADRADO!
}
}
Agora, eu posso trabalhar com o Triangulo e Quadrado apenas sabendo que são
Poligonos. Veja:
public class Teste {
public static void main(String[] args) {
PoligonoRegular[] minhasFiguras = new PoligonoRegular[] {
new Triangulo(10, 10, 10),
new Quadrado(5,12,20),
};
for(int i = 0; i < minhasFiguras.length; i++) {
minhasFiguras[i].desenha2();
}
}
}
O método desenha2() pertence a PoligonoRegular e está acessando o método que
está implementado em Triângulo e Quadrado.
Espero ter esclarecido mais do que complicado ;)
[]'s
Rodrigo Goulart do Nascimento
-----Mensagem original-----
De: [email protected]
[mailto:[EMAIL PROTECTED] nome de .:: LeOnArDo ::.
Enviada em: sexta-feira, 11 de novembro de 2005 13:13
Para: [email protected]
Assunto: [JUG-Petro] Chamar método / construtor da classe filho
Bom dia galera!!
Alguém me dá um help!! ehhe
--
Criei uma classe chamada DadosAluno e outra chamada
Notas.
Ambas tem seus construtores e métodos para adicionar
os dados.
OBS: A Notas está herdando a DadosAluno.
public class Notas extends DadosAluno
No main eu fiz o seguinte:
// Cria um objeto de nome aluno e chama o construtor
com um parâmetro.
Notas aluno = new Notas(Quant);
e dentro desse construtor está sendo chamada um método
da classe DadosAluno (para cadastrar os alunos).
Dentro da classe DadosAluno tentei chamar o construtor
ou método da classe Notas mas está dando erro.
A pergunta é: a classe pai não pode chamar um método
da classe filho ?
Obrigado!
Leo
---------
Leonardo Bacha Abrantes
MSN: [EMAIL PROTECTED]
Cel.: (24) 8115-8354
\\!//
(o o)
+------------oOO--(.)--OOo------------+
+ +
+ A diferença entre vírus e Windows +
+ é que o vírus funciona ! +
+-------------------------------------+
+ Slackware Linux +
+ The best one !! +
+ +
+------------------Oooo---------------+
oooO ( )
( ) ) /
\ ( (_/
\_)
"O verdadeiro valor de um ser humano não está nas roupas que veste, sua
classe social,etc... e sim na sua dignidade, lealdade e principalmente seu
caráter." (Leonardo)
__________________________________________________
Faça ligações para outros computadores com o novo Yahoo! Messenger
http://br.beta.messenger.yahoo.com/
Yahoo! Groups Links
--
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.362 / Virus Database: 267.13.0/167 - Release Date: 11/11/2005
--
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.362 / Virus Database: 267.13.0/167 - Release Date: 11/11/2005
------------------------ Yahoo! Groups Sponsor --------------------~-->
Most low income households are not online. Help bridge the digital divide today!
http://us.click.yahoo.com/cd_AJB/QnQLAA/TtwFAA/5cFolB/TM
--------------------------------------------------------------------~->
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/jug-petropolis/
<*> To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/