繁体   English   中英

如何(可以?)我编写了一个扩展了类和子类的类

[英]How do (can?) I write a class that extends a class and a subclass

我有一个问题,我不确定是否有答案,但是值得一试,因为我不想维护两个代码副本。

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

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

换句话说,我想扩展一个超类,然后将其传播到子类。

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

谢谢!

这听起来像是一种情况,您可能要考虑让您的类委托给库类,而不是子类化。

然后,您应该能够拥有一类具有所添加的任何功能的类,并通过委派访问A和B的功能。

根据实际操作的细节,这可能是Decorator Pattern

通过这些类的更多详细信息,我也许可以给出更清晰的建议...

考虑一下您真正想做的事情:您有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中的所有内容编写新方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM