Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何(可以?)编写一个扩展类和子类的类_Java - Fatal编程技术网

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

Java 如何(可以?)编写一个扩展类和子类的类,java,Java,我有一个问题,我不确定是否有答案,但值得一试,因为我不想维护两份代码 我有一个库,其中B类是a类的子类。我自己编写了一个C类,它扩展了a类。我想让B扩展C而不是a,但是因为a和B是第三方库,我没有源代码,我不知道如何做 目前,我知道的唯一解决方案是将C类复制为D类,并将其扩展为B,然后在代码中引用D而不是B 换言之,我想我正在尝试扩展一个超类,然后扩展到子类 我希望这篇文章足够连贯 谢谢

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

我有一个库,其中B类是a类的子类。我自己编写了一个C类,它扩展了a类。我想让B扩展C而不是a,但是因为a和B是第三方库,我没有源代码,我不知道如何做

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

换言之,我想我正在尝试扩展一个超类,然后扩展到子类

我希望这篇文章足够连贯


谢谢 取决于你实际做的事情的细节,这可能是一个错误


有了关于这些类的更多细节,我可能会给出一个更清晰的建议…

想想你真正想做的事情:你有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中包含的所有内容编写新方法。

你为什么要这样做?无法做到;不应该这样做。如果我理解正确,
B类扩展A
C类扩展A
。您希望B扩展C。是的;A和B是图书馆的一部分。我很困惑。。。你说你想要
B扩展C
,但是一个可能的替代方法是创建
D
,这样
C==D
D扩展B
。这不是意味着你想要
C扩展B
?你可以控制
C
,所以让它扩展
B
。实际上,他描述它的方式,最终的结果是:
类B扩展了C{}
,而不是
类C扩展了B{}
,他想在继承树中的A和C之间“插入”他自己的类。