怎么(可以?)我写了一个扩展类和子类的类

时间:2011-08-08 22:10:09

标签: java

我有一个问题,我不确定是否有答案,但值得一试,因为我不想保留两份代码。

我有一个库,其中类B是类A的子类。我自己写了一个类C,它扩展了类A.我想这样做,以便B扩展C而不是A,但是因为A和B是我没有来源的第三方图书馆,我不知道该怎么做。

目前,我所知道的唯一解决方案是将我的C类复制为D类,并将其扩展为B,然后在我的代码中引用D而不是B.

我想换句话说,我正在尝试扩展一个超类,然后传播到子类。

我希望这篇文章足够连贯。

谢谢!

2 个答案:

答案 0 :(得分:2)

这听起来像你可能想要让你的类委托给库类而不是子类化它们。

然后你应该能够拥有一个具有你所添加的能力的课程,并通过授权访问A和B的功能。

根据您实际执行的操作的详细信息,这可能是Decorator Pattern

关于这些课程的更多细节,我或许可以给出更明确的建议......

答案 1 :(得分:-1)

想想你真正喜欢做什么:你有A,B和C类

      A
     / \
    B   C

其中,你写了C; A和B是第三方。你希望C是B的子类,它只是:

      A
     / 
    B  
   /
  C

这在概念上不是问题,重写C所以你有

  class A {}
  class B extends A {}

这些都是第三方且不可更改。现在你有了

  class C extends B {}

,这给出了你描述的内容。但是,由于你发现它很难,我怀疑你可能会遇到类似冲突的方法名称。如果是这样,聚合就是你的朋友:

 class Cprime {
    A a;
    B b;

现在为要包含在A或B中的所有内容编写新方法。