A:构造函数没有返回值,也不能用void修饰。如果不小心给构造函数前面添加了返回值类型,那么这将使这个构造函数变成一个普通的方法,在运行时将产生找不到构造方法的错误。
C:super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。 this(参数):调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)。
D:可以调用。
class Person {
public static void prt(String s) {
System.out.println(s);
}
// 父类·无参数构造方法: A Person.
Person() { //构造方法(1)
prt("父类·无参数构造方法: "+"A Person.");
}
// 父类·含一个参数的构造方法: A person's name is codersai
Person(String name) { //构造方法(2)
prt("父类·含一个参数的构造方法: "+"A person's name is " + name);
}
}
public class Chinese extends Person {
Chinese() {
super(); // 调用父类构造方法(1)
// 子类·调用父类“无参数构造方法”: A chinese coder.
prt("子类·调用父类”无参数构造方法“: "+"A chinese coder.");
}
// 子类·调用父类”含一个参数的构造方法“: his name is codersai
Chinese(String name) {
super(name);// 调用父类具有相同形参的构造方法(2)
prt("子类·调用父类”含一个参数的构造方法“: "+"his name is " + name);
}
// 子类:调用子类具有相同形参的构造方法:his age is 18
Chinese(String name, int age) {
this(name);// 调用具有相同形参的构造方法(3)
prt("子类:调用子类具有相同形参的构造方法:his age is " + age);
}
public static void main(String[] args) {
Chinese cn = new Chinese();
cn = new Chinese("codersai");
cn = new Chinese("codersai", 18);
}
}