1,多态
在面向对象设计中,多态是继数据抽象和继承之间的第三种基本特征。多态作用消除类型之间的耦合关系。多态方法调用允许一种类型表现出与其他的相似类型的区别,只要他们都是从同一基类导出。区别在于根据方法行为的不同而表现出来。又被称为:动态绑定,后期绑定或运行时绑定。
将接口和实现分离开来:多态是分离做什么和怎么做。“实现隐藏”通过将细节“私有化”将接口和实现分离开。
Java对象的多态性体现在向上转型(自动)和向下转型(强制)。
2,绑定
绑定:将一个方法调用同一个方法主题关联起来被称为绑定。后期绑定(动态绑定或运行时绑定):在运行时根据对象的类型进行绑定。除了static和final方法(private方法也属于final方法)之外,其他所有的方法都属于后期绑定。
总结:只有非private方法才可以被覆盖;在导出类,对于基类中的private方法最好使用不同名称。
3,可扩展性:
在一个设计良好的oop程序中,只与基类接口通信,可以做到程序可扩展性。因为在基类新添的功能,在新类不需要任何改动就可以应用。
4,缺陷:域和静态方法
只有普通的方法是多态的。任何域访问操作都将由编译器解析不是多态的。静态方法不具有多态性。静态方法是与类而不是单个对象相关联的。
5,构造器
构造器不具有多态性,隐式static。作用是检查对象是否被正确的构造。
调用顺序:在其他事情发生之前,将分配给对象的存储空间初始化二进制的零--->调用基类构造器,如果存在被覆盖的方法,那么调用被覆盖后的方法,要在导出类构造器之前调用,由于之前步骤,导致初始值为0--->按声明顺序调用成员的初始化方法--->调用导出类构造器的主体。
准则:用尽可能简单的方法使对象进入正常状态;尽量避免调用其他方法。唯一安全调用的使基类中的final方法,private方法。因为不会被覆盖。
6,协变返回类型
SE5中添加的。表示在导出类中的被覆盖方法可以返回基类方法的返回类型的某种导出类型。
总结:如果不运用数据抽象和继承,就不能理解,创建多态的例子。多态不能被单独看,需要和其他特性协同工作。
网友评论