程序执行前就已经知道方法所属的类
注: final 、static、private修饰的方法是前期绑定,其余方法都是后期绑定
后期(动态)绑定运行时根据对象的类型进行绑定(面向接口)
注:使用final可以关闭动态绑定,但不会增加性能
方法可以返回返回类型的导出类型
class AA{ } class BB extends AA{ } class A{ AA a() {return new AA();} } class B extends A{ AA a() {return new BB();}//允许返回更具体的类型 }子类与基类接口方法相同,基类无需知道子类的信息,使用父类方法时只需子类向上转型
向下转型
向上转型的缺点: 当子类扩展了基类方法,使用向上转型不可以使用新方法,造成信息丢失
class A{ void a() {} } class B extends A{ void b() {} } public class DowntransforTest { public static void main(String[] args) { A[] x = {new A(),new B()}; ((B)x[0]).b();//报类转型异常:java.lang.ClassCastException ((B)x[1]).b(); } }转载于:https://www.cnblogs.com/mdc1771344/p/9908799.html
相关资源:JAVA上百实例源码以及开源项目