代码组合java 代码组合实践( 三 )


注意:子类继承了父类的所有变量和函数 只是子类不能访问父类的private类型的变量和函数 其实privae类型的变量还是继承到子类中的
无论还是继承 都允许我们将子对象置于自己的新类中 大家或许会奇怪两者间的差异 以及到底该如何选择
如果想利用新类内部一个现有类的特性 而不想使用它的接口 通常应选择组合 也就是说 我们可嵌入一个对象 使自己能用它实现新类的特性 但新类的用户会看到我们已定义的接口 而不是来自嵌入对象的接口 考虑到这种效果 我们需在新类里嵌入现有类的private对象
有些时候 我们想让类用户直接访问新类的组合 也就是说 需要将成员对象的属性变为public 成员对象会将自身隐藏起来 所以这是一种安全的做法 而且在用户知道我们准备合成一系列组件时 接口就更容易理解 car(汽车)对象便是一个很好的例子
class Engine {
public void start() {}
public void rev() {}
public void stop() {}
}
class Wheel {
public void inflate(int psi) {}
}
class Window {
public void rollup() {}
public void rolldown() {}
}
class Door {
public Window window = new Window();
public void open() {}
public void close() {}
}
public class Car {
public Engine engine = new Engine();
public Wheel[] wheel = new Wheel[ ];
public Door left = new Door()
right = new Door(); // door
Car() {
for(int i = ; i; i++)
wheel[i] = new Wheel();
}
public static void main(String[] args) {
Car car = new Car();
car left window rollup();
car wheel[ ] inflate( );
}
} ///:~
由于汽车的装配是故障分析时需要考虑的一项因素(并非只是基础设计简单的一部分) 所以有助于客户程序员理解如何使用类 而且类创建者的编程复杂程度也会大幅度降低
如选择继承 就需要取得一个现成的类 并制作它的一个特殊版本 通常 这意味着我们准备使用一个常规用途的类 并根据特定的需求对其进行定制 只需稍加想象 就知道自己不能用一个车辆对象来组合一辆汽车——汽车并不 包含 车辆 相反 它 属于 车辆的一种类别 属于 关系是用继承来表达的 而 包含 关系是用组合来表达的
protected
现在我们已理解了继承的概念 protected这个关键字最后终于有了意义 在理想情况下 private成员随时都是 私有 的 任何人不得访问 但在实际应用中 经常想把某些东西深深地藏起来 但同时允许访问衍生类的成员 protected关键字可帮助我们做到这一点 它的意思是 它本身是私有的 但可由从这个类继承的任何东西或者同一个包内的其他任何东西访问 也就是说 Java中的protected会成为进入 友好 状态
我们采取的最好的做法是保持成员的private状态——无论如何都应保留对基 础的实施细节进行修改的权利 在这一前提下 可通过protected方法允许类的继承者进行受到控制的访问
import java util *;
class Villain {
private int i;
protected int read() { return i; }
protected void set(int ii) { i = ii; }
public Villain(int ii) { i = ii; }
public int value(int m) { return m*i; }
}
public class Orc extends Villain {
private int j;
public Orc(int jj) { super(jj); j = jj; }
public void change(int x) { set(x); }
} ///:~
可以看到 change()拥有对set()的访问权限 因为它的属性是protected(受到保护的)
再论合成与继承
lishixinzhi/Article/program/Java/hx/201311/26635
【代码组合java 代码组合实践】关于代码组合java和代码组合实践的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

推荐阅读