多态(Polymorphic),即是事物存在的多种形态。
前提:
- 要有继承关系;
- 要有方法重写;
- 要有父类引用指向子类对象。
特点:
- 成员变量:编译看左边(父类),运行看左边(父类);
- 成员方法:编译看左边(父类),运行看右边(子类);
- 静态方法:编译看左边(父类),运行看左边(父类)。
其中静态方法与类相关,不算是重写,自己的类调用自己。
举例: - 父类:
class Father{
int number = 10;
public void Exercise() {
System.out.println("登山");
}
public static void Drink() {
System.out.println("朗姆酒");
}
}
- 子类:
class Son extends Father{
int number = 20;
public void Exercise() {
System.out.println("跑步");
}
public static void Drink() {
System.out.println("鸡尾酒");
}
}
- 测试类:
Father f = new Son();
System.out.println(f.number);
f.Exercise();
f.Drink();
Son s = new Son();
System.out.println(s.number);
s.Exercise();
s.Drink();
- 运行结果:
10
跑步
朗姆酒
---------------------------------
20
跑步
鸡尾酒
可以对照测试举例感受以上多态特点。