从库类继承需要什么?

时间:2013-12-18 05:44:13

标签: java oop inheritance

我们在Java中有应用程序,我们正在使用一个库类。在项目开始后很长一段时间我们得到的情况是,在我们使用该类的每个函数中,我们想在类的对象中添加一个元素(只是添加值,而不是添加任何新成员)。

这种变化是巨大的。不难做到,但我们已经在100多个函数中使用了这个类。

现在一个解决方案是我们可以继承这个类并在派生类中添加所需的更改。我们保持类的名称相同(并使用基类的完全限定名继承),只需更改包名,这样我们就可以在代码中使用派生类。

这种方法有问题吗?因为我的经理的建议是“它看起来并不容易”。

请告诉我,如果我做错了什么。

3 个答案:

答案 0 :(得分:0)

只要不干扰类的原始功能,您就可以对原始类进行小的更改。这是更好的主意,而不是使一个与基类同名的派生类。

答案 1 :(得分:0)

继承是否是最佳解决方案取决于您尝试添加的元素。如果可能,考虑组合而不是继承。可以找到优势here。在那里你可以找到一个例子,当一个人试图覆盖其中一个方法时。由于您没有库的源代码,因此在您的情况下更有可能。

答案 2 :(得分:0)

如果你要添加的只是一个变量,那么可能是安全的。更复杂的is dangerous。我没有任何代码可以继续,但继承可能不是正确的选择。如果您创建另一个添加不同字段的子类会发生什么,几个月后您意识到现在需要这两个字段?继承不可组合 - 您不能混合和匹配在子类中创建的特化。使用聚合。如果你需要一个也有一个Bar的Foo,那么创建一个同时具有foo和bar的容器类:

class FooWithBar {
    public final Foo foo;
    public final Bar bar;

    public FooWithBar(Foo foo, Bar bar) {
        this.foo = foo;
        this.bar = bar;
    }
}