多态的概念:在不同时刻表现出的不同形态
例子:
Cat cat = new Cat();
Animal animal = new Cat();
多态的前提:
1,有继承/实现关系
2,有方法的重写
3,有父类的引用指向子类的对象
多态成员访问特点
父类Animal
public class Animal{
public int aget = 40;
public void eat(){
System.out.println("动物吃东西");
}
}
子类Cat
public class Cat extends Animal{
private int age = 20;
private int weight = 10;
@Override
pulic void eat(){
System.out.println("猫吃鱼");
}
public void play(){
System.out.println("猫捉迷藏");
}
}
测试类Demo
public class Demo{
public static void main(String[] agrs){
Animal a = new Cat();
System.out.println(a.age);//输出结果为40
System.out.println(a.weight);//编译不通过
a.eat();//输出结果为“猫吃鱼”
//a.play();编译不通过
}
}
总结:
- 成员变量:编译看左边,执行看左边;
- 成员方法:编译看左边,执行看右边
为什么成员变量和成员方法的访问不一样呢?
- 因为成员方法有重写,成员变量没有