您的位置:首页 > 编程语言 > Java开发

再读thinking in java -- 第八章 多态 & 第九章 接口

2018-03-19 10:34 381 查看
第八章 多态:

多态的作用是消除类型之间的耦合关系。
将一个方法调用同一个方法主体关联起来被称作绑定。若在程序执行前进行绑定叫前期绑定。解决前期绑定的问题(对于不同子类相同方法调用产生的疑惑)是通过后期绑定(运行时,根据对象的类型进行绑定)实现的。也被称作动态绑定或者运行时绑定。
java除了static和final方法外,都是后期绑定的。只有非private方法才能被覆盖。private方法被自动认定为final,且对导出类是屏蔽的。只有通过的方法调用才可以是多态的。任何域访问的操作都是编译器解析,所以不是多态的。
若父类和子类有同名的域,则在子对象中存在两个同名的域,子类访问默认的域为它自己的域,而不是父类的域。
static方法也不具有多态性(static是在编译前就初始化)
调用构造器顺序:1、调用基类构造器;    2、按声明顺序调用成员的初始化方法;    3、调用导出类构造器
若遇到清理问题时,由于继承的关系,必须在导出类中覆盖清理方法,且在子类清理方法中必须调用父类清理方法,否则父类清理不会发生。销毁顺序与初始化顺序相反。
若子类方法覆盖父类方法,通过调用子类构造器进而调用父类构造器过程中调用了该方法,则应调用子类方法。
编写构造器的一条准则:用尽可能简单的方法使对象进入正常状态。尽可能避免调用其他方法。在构造器内唯一能安全调用那些方法是基类中的final方法(不会被覆盖)。
协变返回类型:表示导出类中的覆盖方法可以返回基类方法的返回类型的某种导出类型。
不能在运行时决定继承不同的对象,因为这要求在编译期完全确定下来。
用继承表达行为间的差异,并用字段表达状态上的变化。

第九章 接口:

抽象方法仅有声明而没有方法体,即没有大括号。
接口没有提供任何具体实现,方法无方法体。若接口不添加public,则它只具有包访问权限。接口包含的域隐式的是final和static的。接口中的方法一定是public的。
创建一个能够根据所传递的参数对象的不同而具有不同行为的方法被称为策略设计模式。
使用接口的核心原因:为了能向上转型为多个基类型,获得灵活性。
接口通过继承来进行扩展(extends),接口中的域不能是空final的。
接口是实现多重继承的途径,而生成遵循某个接口的对象的典型方式是工厂方法设计模式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: