什么是多态
- 多态是在继承/实现情况下的一种现象,表现为:对象多态、行为多态
People p1 = new Student();
People p2 = new Student();//对象多态
p1.run();
p2.run();//行为多态
此代码编译看左边,运行看右边(编译的时候会编译People类中的方法,但是运行后会显示Teacher、Student 中的方法)
多态的前提
- 有继承/实现关系;存在父类引用子类对象;存在方法重写。
多态的注意事项
- 多态是对象、行为的多态,java中的属性(成员变量)不谈多态。
如果代码中加了成员变量,此时编译看左边,运行还是看左边
多态的好处
- 在多态形势下,右边的对象是解耦合的(就比如汽车轮胎坏了,可以卸下来重新装一个),更便于扩展和维护。
- 定义方法时,使用父类类型的形参,可以接收一切子类对象,扩展性更强,更便利。
多态的弊端
- 多态下不能使用子类的独有功能。
类型转换
People p1 = new Student();
Student s1 =(Student) p1;
Teacher t1 =(Teacher) p1;//此时会报错的,p1此时是学生类型,不可以转为老师类型
可以用instanceof进行判断