你好同学,具体解释我都写在了注释中,希望对你有所帮助。:)
- class Super
- {
- int i = 0;
- public Super(String a) { //带有参数的构造器
- System.out.println("A");
- i = 1;
- }
- public Super() { //不带参数的构造器
- System.out.println("B");
- i = i + 2;
- }
- }
- class Demo extends Super
- {
- public Demo(String a) { //子类的构造器,
- /*
- 当调用这个构造器的时候,首先会执行什么呢?
- 答案是super();
- 也就是说,会去调用Super类的无参数的构造器,
- 此时会先输出B,然后i = 0 + 2 = 2;
- 之后执行本构造器中的输出语句,输出C
- 之后i赋值为5,
- 最后main()方法中调用d.i,输出为5.
- */
- //super(); 这句代码是编译器隐含的,如果不写,编译器会自动生成。
- System.out.println("C");
- i = 5;
- }
- public static void main(String[] args)
- {
- int i = 4; //局部变量i,只在main()方法的作用域有效
- Super d = new Demo("A"); //父类引用指向子类对象
- System.out.println(d.i);
- }
- }
复制代码
|