/*
昨天晚上,夜深人静~.
*/
//定义父类
class FatherClass{
String name = "Mary";
String color = "red";
FatherClass(){
System.out.println("调用父类不含参数的构造方法~~!");
}
FatherClass(String name, String color){
this.name = name;
this.color = color;
System.out.println("调用父类含有参数的构造方法*-*!父父父有有有");
}
}
// 毫无疑问的是:构造方法是无法继承的,因为他们的类名不同。
// 一:若子类中没有构造方法,java编译器为子类添加空的构造方法,构造方法第一行为super();
/*class SonClass extends FatherClass{
}
public class Extension {
public static void main(String[] args){
SonClass s = new SonClass(); //为子类添加无参数的构造方法。
System.out.println(s.name +"---***---"+ s.color);
}
}*/
/*Console:
调用父类不含参数的构造方法~~!
Mary---***---red */
// 二:若子类添加了任意类型的构造方法,java编译器不会为子类无参数的构造方法。
/*class SonClass extends FatherClass{
SonClass(String name, String color){
super(name, color);
}
}
public class Extension {
public static void main(String[] args){
SonClass s = new SonClass(); //没有为子类添加无参数的构造方法。
System.out.println(s.name +"---***---"+ s.color);
}
}*/
/*Error:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The constructor SonClass() is undefined
at Extension.main(Extension.java:43)*/
//错误提示:子类无参数的构造方法没有被定义。
// 三 、若子类的构造方法没有加super语句,java编译器会为该构造方法加一个无参数的super语句,即super();
class SonClass extends FatherClass{
SonClass(String name, String color){
System.out.println("调用子含有参数的构造方法*-*!子子子有有有");
}
}
public class Extension {
public static void main(String[] args){
SonClass s = new SonClass("John", "Golden"); //实际上调用了父类无参数的构造方法,参数没有得到传递。
System.out.println(s.name +"---***---"+ s.color);
}
}
/*Console:
调用父类不含参数的构造方法~~!
调用子含有参数的构造方法*-*!子子子有有有
Mary---***---red*/
|