到底选择合成照旧担任
当前位置:以往代写 > JAVA 教程 >到底选择合成照旧担任
2019-06-14

到底选择合成照旧担任

到底选择合成照旧担任

无论合成照旧担任,都答允我们将子工具置于本身的新类中。各人或者会奇怪两者间的差别,以及到底该如何选择。
假如想操作新类内部一个现有类的特性,而不想利用它的接口,凡是应选择合成。也就是说,我们可嵌入一个工具,使本身能用它实现新类的特性。但新类的用户会看到我们已界说的接口,而不是来自嵌入工具的接口。思量到这种结果,我们需在新类里嵌入现有类的private工具。
有些时候,我们想让类用户直接会见新类的合成。也就是说,需要将成员工具的属性变为public。成员工具会将自身埋没起来,所以这是一种安详的做法。并且在用户知道我们筹备合成一系列组件时,接口就更容易领略。car(汽车)工具即是一个很好的例子:
 

//: Car.java
// Composition with public objects

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[4];
  public Door left = new Door(),
       right = new Door(); // 2-door
  Car() {
    for(int i = 0; i < 4; i++)
      wheel[i] = new Wheel();
  }
  public static void main(String[] args) {
    Car car = new Car();
    car.left.window.rollup();
    car.wheel[0].inflate(72);
  }
} ///:~

由于汽车的装配是妨碍阐明时需要思量的一项因素(并非只是基本设计简朴的一部门),所以有助于客户措施员领略如何利用类,并且类建设者的编程庞洪水平也会大幅度低落。
如选择担任,就需要取得一个现成的类,并建造它的一个非凡版本。凡是,这意味着我们筹备利用一个通例用途的类,并按照特定的需求对其举办定制。只需稍加想象,就知道本身不能用一个车辆工具来合成一辆汽车——汽车并不“包括”车辆;相反,它“属于”车辆的一种种别。“属于”干系是用担任来表达的,而“包括”干系是用合成来表达的。

    关键字:

在线提交作业