我BlueJ的为Mac JAVA代码。 我已经添加了stdlib.jar库(普林斯顿http://introcs.cs.princeton.edu/java/stdlib/ )。 之前加入这个图书馆,我有我叫StdDraw.java自己的类和复制/粘贴代码(我用的是该项目的具体类)。 我还调整了一些代码,并增加了一些新的生产线。 既然不能编辑库中的代码,我怎么可以覆盖或扩展库中的类添加额外的功能?
Answer 1:
由于库类是final
,你不能扩展它们。 另一种选择是将它们包装在自己的类。 例如,您可以创建具有实例自己的绘图类StdDraw
它委托给。 对于很多的你的方法,你可以简单地调用对应的方法StdDraw
实例,或者你可以自己实现方法模拟压倒一切。
Answer 2:
只需简单地扩展类,
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
}
}
文章来源: Overriding User Library Classes in Java