public static void main(String[] args) { new SubCls(); new SubCls(); } } class SuperCls { static SuperCls s = new SuperCls(); static int a = 10; int b = 5; { a+=3; System.out.println(a); } { b+=2; System.out.println(b); } public SuperCls () { System.out.println("super"); } } class SubCls extends SuperCls { static SubCls c = new SubCls(); static int x = 20; int y = 15; { x+=3; System.out.println(x); } { y+=2; System.out.println(y); } public SubCls() { System.out.println("sub"); } }输出结果是什么
时间: 2024-03-29 07:40:36 浏览: 74
C#中static void Main(string[] args) 参数示例详解
这段代码的输出结果是:
super
13
7
sub
23
17
super
13
7
sub
23
17
解释:
1. 静态变量和静态初始化块的初始化优先于非静态变量和非静态初始化块,且只会执行一次。所以在程序运行时,会先执行父类中的静态变量和静态初始化块,再执行子类中的静态变量和静态初始化块。输出结果为:
13
7
23
17
2. 然后执行两次子类的构造函数,输出结果为:
sub
23
17
super
13
7
sub
23
17
阅读全文