Estou tentanto fazer um código usando polimorfismo e ñ estou conseguindo sobrescrever um método da classe abstrata. Ao ínves de me retornar um string o programa me retorna a classe q eu estou executando e um endereço de mémoria. Alguem poderia me dizer como resolvo isso?
Segue o código.
publicclassAnaliseextendsUneb{publicAnalise(Stringnome,intsemestre){super(nome,semestre);}publicvoidmaterias(){JOptionPane.showMessageDialog(null,"Calculo Númerico\nTópicos em Ciência da Computação\n "+"Gestão de Cpd");}publicStringToString(){returnString.format("%s\n%s",super.toString()," Campus II - Alagoinhas-Ba");}}
publicclassMatematicaextendsUneb{publicMatematica(Stringnome,intsemestre){super(nome,semestre);}publicvoidmaterias(){JOptionPane.showMessageDialog(null,"Estágio");}publicStringToString(){returnString.format("%s\n%s",super.toString()," Campus II - Alagoinhas");}}
Poxa kra era isso mesmo. Hehehehehehe. Agora eu ñ consegui entender direito como o java sabe q método chamar e se existisse mas de um método sobrescrito ele chamaria o qual?
Obrigadão
peczenyj
Alias isso poderia ser
Uneb analise = new Analise("Johnny", 7);
Uneb matematica = new Matematica("Jacqueline", 9);
peczenyj
Poxa kra era isso mesmo. Hehehehehehe. Agora eu ñ consegui entender direito como o java sabe q método chamar e se existisse mas de um método sobrescrito ele chamaria o qual?
Obrigadão
O java estava chamando o toString() da classe Object. Como todos as classes descendem de Object, todos tem esse método.
Agora se alguma classe sobreescreve esse método, o compilador é esperto para descobrir que uma instância é da classe Matemática e chama o método de instância certo.
W
WillyKocher
Poxa kra era isso mesmo. Hehehehehehe. Agora eu ñ consegui entender direito como o java sabe q método chamar e se existisse mas de um método sobrescrito ele chamaria o qual?
Obrigadão
voce nao tem como sobreescrever o mesmo metodo mais de uma vez na mesma classe… vai da erro de compilacao se fizer isso…
talvez tua duvida tenha sido com ele sabe se o metodo e o de analise ou de matematica…
isso ele descobre em tempo de execução…
ele vai pegar tua variavel de referencia ver pra que objeto ela aponto… vai nesse objeto e executa o metodo sobre escrito, ele nem chega a ir no teu metodo escrito pela primeira vez na classe abstrata
Slipguedes
Poxa kra era isso mesmo. Hehehehehehe. Agora eu ñ consegui entender direito como o java sabe q método chamar e se existisse mas de um método sobrescrito ele chamaria o qual?
Obrigadão
O java estava chamando o toString() da classe Object. Como todos as classes descendem de Object, todos tem esse método.
Agora se alguma classe sobreescreve esse método, o compilador é esperto para descobrir que uma instância é da classe Matemática e chama o método de instância certo.
Isso só funcionará então com metodos da classe Object. Se eu sobrescrever métodos q ñ existe na classe Object ñ daria certo. É isso?