extends继承或者implements接口实现,是多态的前提。
多态中成员变量的使用特点:
1.直接通过对象名称访问成员变量:看等号左边是谁,优先用谁的,没有则向上找。//Fu obj = new Zi(),等号左边是Fu类
例: 创建一个类Fu,Fu包含成员变量num=10;
创建一个类Zi,并Zi继承Fu,Zi中包含成员变量num=20;
Fu obj = new Zi();
System.out.println(obj.num);//输出10,调用的是父类的num
2.间接通过成员方法访问成员变量,看该方法属于谁,优先用谁的,没有则向上找。
//此处涉及多态中成员方法的使用特点,可先看下方多态中成员方法的使用特点有助于理解此点。
例:创建一个类Fu,Fu包含包含成员变量num=10,成员方法shoutNum; //shoutNum方法为输出num
创建一个类Zi,并Zi继承Fu,Zi包含成员变量num=20;
Fu obj = new Zi();
obj.shoutNum();//若子类中没有对父类的shoutNum方法进行覆盖重写,则子类中不含shoutNum方法,所以向上寻 找,此时为调用父类的shoutNum方法,输出10;
obj.shoutNum();//若子类中对shoutNum方法进行覆盖重写,则此时子类中有shoutNum方法,所以直接调用子类的 shoutNum方法,输出20;
多态中成员方法的使用特点:
1.在多态的代码当中,成员方法的访问规则是看new的是谁则优先用谁,没有则向上寻找。
Fu obj = new Zi(); //向上转型
obj.method();//若父子都有method方法,则优先用子类的。
obj.method();//若父类当中有method方法,但是子类没有,则向上寻找父类中的mothod方法。
以上两个方法实现在前提是父类有method方法或者父子都有此法且子类对method方法实现了重写,所以可以父类.方法调用。
注意:对象若向上转型为父类,则无法调用子类特有的方法。
多态的好处,图例: