学习笔记:多态
参考文章:Java多态的介绍
多态,同一个对象,在不同时刻表现出来的不同形态
多态实现前提:有继承/实现关系、有方法重写、有父类引用指向子类对象
1、多态中成员访问特点
- 成员变量:编译看等号左边,执行看左边
(不能使用子类特有的成员变量)
- 成员方法:对象能编译看等号左边,执行看右边。
(不能使用子类特有的方法。只能使用子类和父类都有的方法)
为什么成员方法和成员变量执行不一样?因为成员方法有重写,成员变量没有重写
//父类
public class Animal {
public int age = 40;
public void eat(){
System.out.println("动物吃东西");
}
}
//子类
public class Cat extends Animal {
public int age = 20;
public int weight = 10;
@Override
public void eat() {
System.out.println("猫吃鱼");
}
public void playGame(){
System.out.println("猫捉迷藏");
}
}
//主接口类
public class AnimalDemo {
public static void main(String[] args) {
//有父类引用指向子类对象
Animal a = new Cat();//向上转型
System.out.println(a.age);//通过多态访问成员变量,访问的是父类的成员变量
// System.out.println(a.weight);//报错,父类没有weight变量
a.eat();
// a.playGame();/报错,父类没有playGame方法
Cat c = (Cat)a;//向下转型
c.playGame();
((Cat) a).playGame();//(Cat) a向下转型
}
}
![](https://img.haomeiwen.com/i2693156/1976f2e90d49dec8.png)
2、多态中的转型
- 向上转型:从子到父,父类引用指向子类对象
- 向下转型:从父到底子,父类引用转向子类对象
网友评论