在Java中压倒一切的用户库类(Overriding User Library Classes in

2019-07-30 22:30发布

我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