首页 > 试题广场 >

继承是JAVA语言的一个特性,针对类的继承,虚拟机会如何进行

[单选题]
继承是JAVA语言的一个特性,针对类的继承,虚拟机会如何进行父类和子类的初始化加载呢?请阅读代码选择出该段代码的输入结果。
public class Test {

    public static void main(String[] args) {
        System.out.print(B.c);
    }
}

class A {
    public static String c = "C";
    static {
        System.out.print("A");
    }
}

class B extends A{
    static {
        System.out.print("B");
    }
}
  • AC
  • ABC
  • C
  • BC
类加载的问题,类加载的初始化阶段会执行静态块的代码,通过子类去调用父类的静态变量子类不会被初始化。
发表于 2019-07-11 23:34:38 回复(0)
详细请见博客讲解 => https://www.cnblogs.com/hglibin/p/10298650.html
编辑于 2019-01-25 09:43:33 回复(0)
JVM中类加载的初始化工作可以延迟执行,直到其中的static成员被调用或者有对象实例化时才触发
发表于 2019-08-25 20:24:39 回复(0)
个人猜想,有错还望指出来
在main方法打印出来的c变量是不是B的而是它的父类A,所以不用加载类B,所以不打印B
发表于 2019-02-20 23:34:48 回复(0)

一个对象变量可以指示多种实际类型的现象被称为多态( polymorphism)。

在运行时能够自动地选择调用哪个方法的现象称为动态绑定( dynamic binding )。

当程序运行,并且采用动态绑定调用方法时, 虚拟机一定调用与 x 所引用对象的实际类型最合适的那个类的方法。假设 x 的实际类型是 D,它是 C 类的子类。如果 D 类定义了方法 f(String) 就直接调用它;否则, 将在 D 类的超类中寻找 f(String), 以此类推。

如果是 private 方法、 static 方法、 final 方法或者构造器, 那么编译器将可以准确地知道应该调用哪个方法, 我们将这种调用方式称为静态绑定( static binding )。

<<Java核心技术卷I>>
发表于 2020-08-27 17:20:04 回复(0)
道理同44
发表于 2019-02-24 20:53:07 回复(1)
执行顺序:静态变量=》静态代码块=》Main()中代码
编辑于 2019-01-23 16:57:50 回复(0)