interface A{}
class B implements A
{
public String test()
{
return "yes";
}
}
class Demo
{
static A get()
{
return new B();
}
public static void main(String[] args)
{
A a=get(); //多态;实现了父类引用指向子类对象。
//上面这句话等同:A a =new B(); 实现了父类引用指向子类对象。
//现在把方法get()的反回值 new B() ,B的一个实例看作成一个A的对象来用。
//例如:将一个猎人当作一个普通人来看了。 其中,A为猎人,B为普通人,
System.out.println(a.test());//既然将猎人只当一个普通人来看,那么他就不会有猎人才具备的打猎方法了。其中将test()看做猎人的打猎方法。
//因为A中没有test()方法,所以a.test()编译错误。
//如果你将 A a=get(); 改成 B a=(B) get(); ,就可以调用a.test()方法了。
}
}
|