仔细阅读下面的程序
public class Car {
String name = "汽车";
public Car(String name) {
this.name = name;
}
// 加上main方法
public static void main(String[] args) {
Car bmw = new BMW("宝马X5");
System.out.println(bmw.name);
}
}
class BMW extends Car {
String name = "宝马";
public BMW(String name) {
this.name = name;
}
}
请问正确的选项是什么?
A.汽车 B.宝马 C.宝马x5 D.编译报错 E.输出异常
答案
答案是:D.编译报错
解析
1.相关知识
子类继承父类时,如果父类没有无参构造器,子类需要在构造函数中通过super(参数),先显示调用父类的有参构造。
2.代码流程
定义了Car类,包含name属性值为"汽车";
定义了有参构造将默认的name值"汽车"传递给参数;
定义了BMW类继承Car类,包含name属性值为"宝马";
有参