8.以下代码能否编译通过?假如能编译通过,运行时将得到什么打印结果? class A { public A() {} public A(int i) { this(); } } class B extends A { public boolean B(String msg) { return false; } } class C extends B { private C() { super(); } public C(String msg) { this(); } public C(int i) {} }
4.以下代码能否编译通过?假如能编译通过,运行“java B”时将得到什么打印结果?class A {int i;A(int i) {this.i = i * 2;}}
class B extends A {public static void main(String[] args) {B b = new B(2);}B(int i) {System.out.println(i);}}
4.以下代码能否编译通过?假如能编译通过,运行“java B”时将得到什么打印结果?class A {int i;A(int i) {this.i = i * 2;}}
class B extends A {public static void main(String[] args) {B b = new B(2);}B(int i) {System.out.println(i);}}
第二题不能,因为B类继承A,而A又没有无参数构造方法,所有在B的构造方法中要显示调用父类构造方法才行
只是有一个和类名一样的方法名
这是允许的,只是会有警告说你最好不要这样命名第二个不能编译通过
因为B在调用B(int i)之前会调用他的父类的默认构造函数A()
但是A里没有定义(这是因为它已经定义了A(int i),导致不会自动生成默认构造函数),所以编译失败