作为参数扩展或传递

时间:2015-07-09 22:00:22

标签: java class

哪一个是更好的做法,做这样的事情

public class A {
    private B b;

    public A() {
         b = new B(this);
    }
}

public class B {
    private A a;

    public B(A a) {
        this.a = a;
    }
}

或扩展课程,我真的很困惑,除了有一个' a'作为一个领域。

3 个答案:

答案 0 :(得分:2)

这完全取决于具体情况。

让我们假设 A 类代表Car,然后是   如果 B Engine,那么您应该使用合成(Car有引擎)
  如果 B RaceCar那么你应该使用继承(RaceCar是一个更好的汽车)

如果有疑问,软件开发的当前趋势是更喜欢组合而不是继承。

答案 1 :(得分:0)

  • 继承:应用 IS-A 测试。
  • 成分:应用 HAS-A 关系。

答案 2 :(得分:0)

这取决于你要实现的目标。 就像Win.ubuntu说的那样,使用扩展了猫/动物。 但是,如果你想拥有像汽车那样的引擎,那么请使用你的第二个例子。