Java编程思想:第7章 复用类 Java final 关键字 & 参数传递特色 Java 类加载、调用构造器、执行方法的过程

复用代码是Java众多引人注目的功能之一。但仅仅能复制代码并对之加以改变是不够的,还须要作更多的事情。html

复用代码的两种形式:ide

1.组合,新类中产生现有类对象post

2.继承,用现有类型建立新类型url

7.1组合语法spa

7.2继承语法代理

7.2.1初始化基类htm

当建立了一个导出类的对象时,该对象包含了一个基类的子对象。这个子对象与你用基类直接建立的对象是同样的(Java会自动在导出类构造器里插入对基类构造器的调用,基类只含带参构造须要本身用super调用,不可省略),两者区别在于继承时基类的子对象包装在导出类对象内部,而直接建立来与外部。对象

7.3代理blog

代理:第三种关系,Java没有对它的直接支持,继承和组合之间中庸之道。继承

实现代理:把一个成员对象放在代理类中(就像组合),同时在新类中暴露了这个对象的全部方法(就像继承)。

7.4结合使用组合和继承

7.4.1确保正确清理

除了内存以外,不能依赖垃圾回收器去作任何事。若是须要清理,最好是编写本身的清理方法(子类清理方法和父类清理方法调用顺序按照建立反序来执行),在该对象使用结束以后,用finally{}子句调用清理方法,不要使用finalize()。

7.4.2名称屏蔽

子类能够对基类方法进行覆盖,重载。利用@override注解能够防止在想覆盖时意外写成了重载

7.5在组合与基础之间选择

继承:is-a

组合:has-a

7.6protected关键字

 提供子类和同包的访问权限

7.7向上转型

为新类型提供方法,并非继承技术中最重要的方面,最重要的是新类和基类之间的关系,这种关系能够用”新类是现有类的一种类型“来表示。

7.7.1为何称为向上转型

7.7.2再论如何选择组合与继承

问一问本身是否须要重新类向基类转型,须要用继承,不然尽量不要用

7.8final关键字

参照 Java final 关键字 & 参数传递特色

7.9初始化及类的加载

Java中类的加载在初次使用时发生,一般是建立对象或者访问static方法(构造器也算是static方法,只是隐式的)。

7.9.1继承与初始化

 参照 Java 类加载、调用构造器、执行方法的过程

7.10总结

组合和继承均可以产生新类型。组合通常是把现有类型做为新类型实现的一部分加以复用,而继承是复用已有类型的接口。

相关文章
相关标签/搜索