我需要通过覆盖它的一些方法来扩展我的主类的功能.我期待扩展主类的类能够运行.但是,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并注入该类.
静态方法不是继承的,它们总是绑定到定义它们的类,并且需要明确地调用.
在你的情况下,也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)
无法从外部调用受保护的方法。因此,MyLauncher.setup()不要重写Launcher.setup()并instance.setup();调用 Class 中的公共方法Launcher。