1.成员变量
多态的成员变量调用的时候只关心引用型变量所属的类中是否有被调用的成员变量;有,则编译通过;否则,编译失败.
通俗的讲:也就是看定义变量的时候等号左边的变量类型所属的类中是否有这个成员.
如:下面这个例子输出的就是5.
2.以上说的是成员变量,如果是调用成员函数的情况呢?
在编译的时候:要看引用类型变量所属的类中是否有被调用的函数,如果没有,报错.反之通过编译
在运行的时候:要看的是等号右边即看是由谁创造的,是谁创造的就是调用谁的函数,如果创造对象的类中没有这个函数就会调用父类里面的这个函数.
特殊情况: 如果这个 函数是静态那么情况就不同了.
如果是静态的函数,那么在调用的时候只关心是那个引用类型变量所属的类,是那个类就调用那个类里面的这个函数.
如果在是子类类型且刚好子类里面没有这个函数那么就会自动调用父类的.
如果是子类类型的且有这个函数那就调用子类自己的.
编译:在编译的时候如果左边的引用类型类是父类自己,但是父类里面又没有这个函数的时候会报错.!
public class Polymophic
{
public static void main(String [] args)
{
base b=new child();
System.out.println(b.num);
}
}
class base
{
int num=5;
}
class child extends base
{
int num=3;
}