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){} //发动 }