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/
 



Atrašyti