多态
什么是多态:允许不同类的对象对同一消息作出不同的响应。
多态包括:参数化多态性和包含多态性
多态的作用:
1.将接口与实现相分离开来
2.消除类型之间的耦合关系
3.灵活、抽象、灵活、行为和代码共享,解决了函数名同名的情况
方法绑定:
什么是方法绑定:将一个方法调用与方法主体关联起来
多态问题:基类作为接受参数类型实现向上转型,那怎么知道基类引用指向的是传过来的那个导出类类型呢?
动态绑定:在运行的时候根据对象的类型进行绑定,也就是说编译器不知道对象的类型,但是方法调用机制能找到正确的方法体。所以必须在对象中安置某种类型信息。
注意:静态放方法不具有多态性:静态方法不和单个对象相关联,而是与类先关联,想一下静态变量的初始化
构造器和多态:
构造器的调用顺序:找到最初始的基类,依次往下调用或是初始化。
构造器内部多态行为的危险性:
涉及到初始化顺序的差错,导致某些变量没有被初始化就直接调用了,这里说明了:在任何事物发生之前,将分配给对象的存储空间初始化为二进制的零。
解决方案:不要再构造器内部调用其他方法。在构造器内部能调用的方法是那些没有具有多态性(private方法或是static方法)。
接口
接口和内部类提供了一种将接口与实现分离的更加结构化的方法。
抽象类与接口:
抽象类:包含一个抽象或多个抽象方法的类(抽象方法:只有声名没有方法体)
接口:完全的抽象类
完全解耦
策略模式:即多态的使用,动态绑定的理解。
使用接口的好处:
增大代码的复用性的
避免类继承出现的告耦合度
接口是多重继承的有效途径:如工厂模式
注意:工厂模式和策略模式都运用到了多态,及动态绑定的思想
内部类
什么是内部类:将一个类的定义放在另一个类的定义内部
内部类的特点
名字隐藏和组织代码
链接到外部类:当生成一个内部类对象时,它拥有外部类所有元素所有的权限