1

我用 BlueJ for Mac 编写 java 代码。我添加了 stdlib.jar 库(来自princeton http://introcs.cs.princeton.edu/java/stdlib/)。在添加这个库之前,我有自己的名为 StdDraw.java 的类(我在项目中使用的特定类)并复制/粘贴了代码。我还调整了一些代码并添加了一些新行。由于我无法编辑库代码,我如何覆盖或扩展库类以添加额外的功能?

4

2 回答 2

1

由于库类是final,因此您无法扩展它们。另一种选择是将它们包装在您自己的类中。例如,您可以创建自己的绘图类,该类具有StdDraw它委托给的实例。对于您的许多方法,您可以简单地调用StdDraw实例的相应方法,或者您可以通过自己实现方法来模拟覆盖。

于 2013-05-23T15:51:18.860 回答
0

只需简单地扩展类,

public MyClass extends ClassFromLib

确保库 jar 文件位于类路径中。如果该类的作者将其声明为 final,则表明它不适合子类化。那么最好的选择是使用委托模式。

我在这个编辑器中编写了下面的代码,所以没有承诺它会遵守,但希望你能明白。

public Myclass {
    private ClassFromLib cfl = new ClassFromLib();

    public void methodA(){
        //Do whatever you need here
        cfl.methodA();  //Doesn't have to be the same name. 
        //Do whatever you need here
    }
}
于 2012-08-10T21:59:51.340 回答