《面向对象高级特性(多态)》
目录
一、向上转型
Java绑定机制
- 静态绑定:编译期绑定,也叫做前期绑定;
- 动态绑定:运行期绑定,也叫后期绑定(正是因为有了动态绑定机制才实现了Java中的多态行为)。
向上转型(上溯)
上转型对象
上转型对象不能操作子类新增的变量及方法,只能操作继承来的变量或方法,若子类中重写了该方法,则调用重写后的方法。
- A类
package com.hpr.entity;
public class A {
public int x = 1;
public void aa() {
System.out.println("执行aa方法...");
}
}
- B类
package com.hpr.entity;
public class B extends A {
public int x = 11;
public int y = 22;
@Override
public void aa() {
System.out.println("重写后的方法aa...");
}
}
- C类
package com.hpr.entity;
public class C extends A {
}
- 测试类
package com.hpr.test;
import com.hpr.entity.A;
import com.hpr.entity.B;
public class Test {
public static void main(String[] args) {
A a = new B();
System.out.println(a.x);
a.aa();
}
}
执行结果
二、多态
官方定义:多态(英语:polymorphism)指为不同数据类型的实体提供统一的接口。
通俗理解:当一个类有多个子类,并且子类都重写了该类的某个方法,产生了各自的功能行为,当上转型对象调用该方法时就具有了多种形态,称之为多态。
三、向下转型
向下转型(下溯)
向下转型即将上转型对象转回子类对象,前提必须是该子类的上转型对象才能成功下溯,instanceof关键字可判断当前对象是否属于某类的一个实例。
A a = new B();
if (a instanceof B) {
B b = (B) a;
} else if (a instanceof C) {
C c = (C) a;
}
System.out.println(a instanceof A); //true
System.out.println(a instanceof B); //true
System.out.println(a instanceof C); //false
总结
重点
- 向上转型;
- 向下转型;
- 多态概念。
难点
- 多态概念。