是否可以编译父类的java类子类,即 调用子类的方法不需要加载父类。
可以使用某些高级选项进行编译或运行。
例如 我有3节课
public class Parent {
public void baseMethod(){
System.out.println("Parent.baseMethod invoked");
}
}
public class Child extends Parent{
public void childMethod(){
System.out.println("Child.childMethod invoked");
}
}
public class Main {
public static void main(String[] args) {
new Child().childMethod();
}
}
我编译它们,并删除 Parent.class。
我想运行
java Main
无一异常(exception)
最佳答案
没有。方式。 Java 将始终加载父类(super class)。创建实际实例需要父类(super class)。
创建新的 Child
将会隐式调用 Parent()
,此时您需要Parent
类加载.
PS - 如果您只想在子类上调用静态方法,则甚至不起作用,如下所示:
public class Parent {}
public class Child {public static void hello(){System.out.println("hello");}}
public class Caller{public static void main(String[] args){Child.hello();}}
删除Parent.class
将会抛出NoClassDefFoundError
,即使没有创建Child
的实例。
关于java - 在没有类加载父类的情况下调用子类方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5562849/