是否可以编译父类的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
没有例外
答案 0 :(得分:4)
没有。办法。 Java将始终加载超类。超类是必需的来创建实际的实例。
创建新的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
。
答案 1 :(得分:3)
答案 2 :(得分:2)
这不起作用。
加载类时,首先加载所有的超类。如果无法找到它们,则无法加载该类。
答案 3 :(得分:1)
继承意味着:孩子 IS 父母,所以你不能。
答案 4 :(得分:0)
您必须加载超类或类才能加载类。
如果不希望这样做,唯一的选择是