多态中成员变量的使用特点:
访问成员变量的两种方式(不仅是多态中,继承也遵循这个规则)
1.直接通过对象名称访问成员变量,看等号左边是谁,优先用谁,没有则向上找;例如
父类:
public class Fu {
int num = 10;
}
子类:
public class Zi extends Fu{
int num = 20;
}
main方法:等号左边是父类,所以输出父类的成员变量
public class Demo {
public static void main(String[] args) {
//使用多态,父类引用指向子类对象
Fu obj = new Zi();
//等式左面是谁就是谁 没有就向上找
System.out.println(obj.num); //输出10
}
}
2.间接通过成员方法访问成员变量,看方法属于谁,有则用谁,没有则向上找
父类:
public class Fu {
int num = 10;
public void shoeNum(){
System.out.println(num);
}
}
子类:
public class Zi extends Fu{
int num = 20;
public void shoeNum(){
System.out.println(num);
}
}
main方法:方法属于子类,子类有这个方法,优先用子类的方法(如果子类没有,就用父类的)
public class Demo {
public static void main(String[] args) {
//使用多态,父类引用指向子类对象
Fu obj = new Zi();
//方法属于谁就是谁 没有就向上找
obj.shoeNum(); //输出子类成员变量 20
}
}