Java 扩展库中类中间结构的超类

Java 扩展库中类中间结构的超类,java,design-patterns,subclass,superclass,Java,Design Patterns,Subclass,Superclass,我正在使用这个库,我不得不重写一些超类中的一些方法。我现在要做的是扩展我需要的类,并重新定义我需要从它的超类重写的方法 class A { ... } class B extends A { ... } class C extends A { ... } class myD extends B { protected void overriddenAfunction() { ... } } 当几个类扩展同一个超类,并且我希望所有子类都使用相同的重写方法时(例如,如果C也需要相

我正在使用这个库,我不得不重写一些超类中的一些方法。我现在要做的是扩展我需要的类,并重新定义我需要从它的超类重写的方法

class A { ... }

class B extends A { ... }

class C extends A { ... }

class myD extends B {

    protected void overriddenAfunction() { ... }

}
当几个类扩展同一个超类,并且我希望所有子类都使用相同的重写方法时(例如,如果C也需要相同的重写函数()定义),这显然是不好的

有没有什么设计模式或方法可以让它变得漂亮?我想象你可以做这样的事情:

class A { ... }

class B extends A { ... }

class C extends A { ... }

class myD extends A {

    private A BorC = null;

    public myD(A BorC) {

        this.BorC = BorC;

    }

    protected void overriddenAfunction() { ... }

    public void overriddenBfunction() { 

        ((B) BorC).overriddenBfunction();

    }

    public void overriddenCfunction() { 

        ((C) BorC).overriddenCfunction();

    }

}

Usage:

A testB = new myD(new B());
A testC = new myD(new C());
然而,如果B和C中的每一种方法都有效的话,我就需要把它们都放进去

有没有更好的方法或解决办法?我想做的就是避免重新打包库,尽管我想这真的是最好的解决方案


我想我也可以复制B和C,让它们扩展myD,而myD扩展A。这个库还有所有可用的源文件,所以我可以这样做或做类似的事情。

没有办法覆盖
A
,让
B
C
受益于新功能。你只有两个选择,我可以看到,你提到他们两个:

  • 重写
    A
    并重新打包库
  • MyD
    扩展
    A
    ,然后复制扩展
    MyD
    B
    C

我可能在解释情况方面做得不好。我正在使用JFreeChart(它是一个用于绘制图表的库)。它有一个类NumberAxis(A),其中的函数控制如何绘制轴上的记号。然后有类DateAxis(B)和SymbolAxis(C)扩展了该类。这些类包含一些特定的函数,如设置标签的格式。我想做的是用一些有效的方法覆盖NumberAxis中的方法,这样DateAxis和SymbolAxis都可以使用它们。