java编程思想第四版第七章总结

1. 实现类的复用通常有两种方式

组合:在新的类中产生现有类的对象

继承:按照现有类的类型来创造新类

2. 一个特殊的方法toString()

在非基本类型的对象中, 都有toString()方法

当编译器需要一个String而你只有一个对象时, toString()方法会被自动调用

3. 父类方法的定义要求

所有的方法都是public的.

原因: 如果没有修饰符,则是包访问权限, 那么包以外的其他类继承了这个类, 依然不能访问这个父类的方法. 所以, 定义父类的公用方法需要时public的.

为了继承一般的规则是: 成员变量是private的, 方法是public的.

4. 基类初始化

java会在子类中自动调用父类的构造器

父类如果没有默认构造器, 子类需要用super显示的调用父类的构造器. 而且调用父类构造器,必须是子类构造器要做的第一件事

基类的默认构造器, 也要显示的调用父类的有参构造器

5. 复用的第三种方式: 代理

代理: java并不直接支持他, 它是继承和组合之间的一种中庸之道.

无论我们使用的时组合, 还是继承. 都会暴露所有对象的成员方法

组合:在类中new一个对象, 然后该对象的所有成员方法在这个类中就都可以被使用。

继承:继承了父类, 那么父类的方法对这个子类来说, 更是完全可见的。

这两种方法都会完全暴掠被使用的那个类的成员方法, 而有的时候, 我们不希望这样, 不想父类或者被调用类的成员方法被暴露在外, 就可以采用代理的方式, 如下例:太空船需要一个控制模块

package net.mindview.reusing; public class SpaceShipControls { //velocity 速度 void up(int velocity){} void down(int velocity){} void left(int velocity){} void right(int velocity){} void forward(int velocity){} void back(int velocity){} void turboBoost(int velocity){} //发动 }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjsxf.html