Java多态性:父类引用指向子类对象
public class Fu {
int num=10;
}public class Zi extends Fu{
int num=20;
}
1.直接通过对象名称访问成员变量
Fu fu=new Zi(); System.out.println(fu.num);
输出结果为10;
所以说,直接访问成员变量遵从父类,子类不可覆盖重写。
2.间接从成员方法中访问。
我们在刚刚的两个类中都添加一个方法。
public void show()
{
    System.out.println(num);
}
然后再来调用
Fu fu=new Zi(); fu.show();
输出结果为20;
如果将Zi类中show的方法去掉,那么输出还是10;
故通过间接方法来调用成员变量时,应该看该方法属于谁,就调用谁,如果没有,则向上查找。
二.成员方法的访问规则
看new的是谁,就优先调用谁,没有则向上找。
父类的两个方法
public void show()
{
    System.out.println(num);
}
public void fumethod()
{
    System.out.println("父类特有的方法!");
}子类的两个方法
public void show()
{
    System.out.println(num);
}
public void Zimethod()
{
    System.out.println("这是子类特有的方法");
}接下来验证一下
    Fu obj=new Zi();//多态
        obj.show();//父子都有,优先调用子类
        obj.fumethod();//子类没有,父类有,向上找到父类
        obj.Zimethod();//报错
其实很简单,只需要记住一个口诀,编译看左边,运行看右边。
编译的时候看父类有没有该方法,没有报错,有的话运行看右边有没有该方法,有则优先用右边,没有就用父类即可。

 京公网安备 11010502036488号
京公网安备 11010502036488号