/*
*
* In questo caso si hanno due classi, A e B: la seconda ridefinisce sia la proprietà che il
metodo, in modo da identificare su quale tipo sono invocati
*
* */
class A
{
public String a="Valgo A";
public A()
{
}
public void get()
{
System.out.println("Eseguo A");
}
}
class B extends A
{
public String b="Valgo B";
public B()
{
}
public void get()
{
System.out.println("Eseguo B");
}
}
public class Esempio {
public static void main(String[] args) {
// TODO Auto-generated method stub
A a =new A();
a.get();//esce A
B b= new B();
b.get();//esce B
a=b;//copio b in a
a.get();//esce B perchè il metodo
//effettivamente eseguito dipende non dal tipo del reference
//ma dal contenuto effettivo.
//Questo meccanismo prende anche il nome di binding dinamico.
System.out.println(a.a);//è rimasta A perchè nel caso delle variabili
//di classe la variabile utilizzata è quella del tipo del reference,
//non del contenuto.
}
}
Post Views: 18.260