2012-08-10 56 views
1

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

+1

你问如何扩展一个类? – gobernador 2012-08-10 21:35:57

回答

0

只需简单地扩展类,

public MyClass extends ClassFromLib 

确保库jar文件的类路径。如果该类的作者声明它最终表明它不适合继承子类。那么最好的选择是使用委托模式。

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

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 
    } 
} 
+0

当我尝试这个时,它说,“不能延长最终课堂”。 – Vasseurth 2012-08-11 14:36:57

1

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