题目
public class Test {
public static void main(String[] args) {
new C();
}
}
class A{
A(){
System.out.print("A");
}
}
class B{
A a = new A();
B(){
this("B");
System.out.print("B");
}
B(String str){
System.out.print(str);
}
}
class C extends B{
C(){
super("C");
System.out.print("C");
}
}
上述程序输出的结果为?
A.CC
B.CAA
C.CABB
D.上述答案都错误
当调用父类的有参构造时不会再去调用父类的无参构造
类成员的声明在构造函数前执行
main函数中首先new C()
C继承于B,类成员声明在构造函数前执行,因此先执行
A a = new A();调用A的构造函数,输出A
接着调用super("C"),调用B类的有参构造,传递参数C,输出C
继续执行C类的构造函数System.out.print("C");输出C
因此最终输出ACC。
答案选D。
重载——定义
题目
public void set(int a, int b, double c){}
请问下列选项中,为上面方法重载的是?
A.private void set(int a, double c, int b){}
B.protected void set(int a, int b, double c){}
C.public int set(int a, double c, int b){return a;}
D.public int set(int a, float c){return a;}
往期回顾