多态:某一个事物在不同状态下的多种状态
举例:
1、学生是人,老师是人,医生是人。
2、汽态的水是水,固态的水是水,液态的水是水
在java中要实现多态的话,需要有3个前提:
1、必须要有继承关系
2、要有方法的重写(思考可否不重写?)
不是必须要重写的,重写可以体现子类的专属特征。
3、要有父类的引用指向子类对象
使用多态第三个前提的注意事项:
1、必须是继承关系的类,才可以写成父类的引用指向子类对象
2、左边的父类,可以不必是子类对象的直接父类,也可以是父类的父类
多态下,访问成员的特点:
1、成员变量
编译看左,运行看左。
2、成员方法
编译看左,运行看右。(如果子类没有重写则运行从父类继承过来的方法)
思考:如何在多态的状态下,使用子类中特有的方法呢?
3、静态的成员方法
编译看左,运行看左。
成员方法执行顺序案例
class A {
public void show() {
show2();
}
public void show2() {
System.out.println("我");
}
}
class B extends A {
//子类继承自父类中的show方法,相当于子类也有一份show方法
// public void show() {
// show2();
// }
public void show2() {
System.out.println("爱");
}
}
class C extends B {
public void show() {
//相当于将父类中show方法中的方法体逻辑在子类中执行
super.show(); // show2();
}
public void show2() {
System.out.println("你");
}
}
public class DuoTaiDemo4 {
public static void main(String[] args) {
A a = new B();
a.show(); // 爱
B b = new C();
b.show(); // 你
}
}