Oi galera…
tenho estas classes
public class Pai {
Pai() {};
String m () {
return "metodo sobrescrito -- PAI";
}
String n (){
return "metodo nao sobrescrito -- classe pai";
}
}
public class Filho extends Pai {
Filho() {};
String m () {
return "metodo sobrescrito -- FILHO";
}
}
public class teste {
public static void main(String[] args) {
Pai pai = null;
Pai p = new Pai();
Filho filho = new Filho();
if (filho instanceof Pai) {
pai = filho;
p = (Pai)filho;
if (filho == pai)
System.out.println("true");
else
System.out.println("false");
//achei que fosse imprimir o método da clase pai
System.out.println(((Pai)pai).m());
//achei que não ia conseguir enxergar o método
System.out.println(pai.n());
//achei que fosse imprimir o método da clase pai
System.out.println(p.m());
}
}
}
o que imprime:
true
metodo sobrescrito – FILHO
metodo nao sobrescrito – classe pai
metodo sobrescrito – FILHO
achei estranho o comportamento do programa, nas partes que eu comentei o código…
alguém poderia me explicar o porquê dessas coisas?
desde já, agradeço…
