在Java中扩展主类

ecc*_*ecc 7 java eclipse

我需要通过覆盖它的一些方法来扩展我的主类的功能.我期待扩展主类的类能够运行.但是,Eclipse不会将MyLauncher识别为可运行的类.在下面的代码中,我有一个setup()被子类覆盖的方法.我想要的是一种main(..)从超类运行的方法,还有从子类运行的设置.

// Launcher.java
public class Launcher {

    Launcher instance;

    public static void main (args[]) {
        instance = new Launcher(); // This is likely the problem
        instance.setup();
    }

    public void setup() {
        System.out.println("Default agent setup.");
    }
}

// MyLauncher.java
public class MyLauncher extends Launcher {

    public void setup() {
        System.out.println("New agent setup!");
    }
}
Run Code Online (Sandbox Code Playgroud)

我接受这个的替代方案.但是我无法在子类中添加main方法.Launcher类在我正在制作的API中,因此它不能引用正在使用API​​的类MyLauncher.

编辑:我认为这是针对我的问题.我决定寻找新的方法.由于我正在使用JDT,我将解析Launcher并注入该类.

Pet*_*ser 7

静态方法不是继承的,它们总是绑定到定义它们的类,并且需要明确地调用.

在你的情况下,也MyLauncher需要一个main()方法,然后可以委托给以下main()方法Launcher:

public class MyLauncher extends Launcher {

    public static void main (String[] args) {
        Launcher.main(args);
    }

    protected void setup() {
        System.out.println("New agent setup!");
    }
}
Run Code Online (Sandbox Code Playgroud)


Pet*_*der 2

无法从外部调用受保护的方法。因此,MyLauncher.setup()不要重写Launcher.setup()instance.setup();调用 Class 中的公共方法Launcher