[英]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.