java - 在没有类加载父类的情况下调用子类方法?

标签 java parent-child classloader

是否可以编译父类的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/

相关文章:

java - 如何在网站模式/灯箱窗口中运行 Java Applet

通过 shell 脚本的 Java 命令行参数

java - 如何使用具有多个选项的 JOptionPane? java

jQuery父子元素点击事件

Java 类加载器困惑

java - JPA 2.1 表示属性 "indexes is undefined"

javascript - 在 Angular 7 中使用 ng-content 动态隐藏 child

Java - 从第一个父级开始的组路径列表

java - JVM 无法正确加载类

java - 如何使用反射来检查使用不同类加载器加载的类的非静态字段?