#JAVA#面相对象(继承中的构造方法)
package 继承;
/*
继承中构造方法的关系
A:子类中所有的构造方法默认都会访问父类中空参的构造方法
原因:因为子类会继承父类中的数据,可能还会使用父类的数据
所以,子类初始化之前,一定要先完成父类数据的初始化
注意:子类每一个构造方法的第一条语句默认都是:super();
*/
class Father{
public Father() {
System.out.println("Father的无参构造方法");
}
public Father(String name) {
System.out.println("Father的带参构造方法");
}
}
class Son extends Father{
public Son() {
//super();
System.out.println("Son的无参构造方法");
}
public Son(String name) {
//super();
System.out.println("Son的带参构造方法");
}
}
class extendsDemo {
public static void main(String args[]) {
Son s=new Son();
System.out.println("-------");
Son s2=new Son("***");
}
}
package 继承;
/*
如果父类有带参构造方法没有无参构造方法,那么子类的构造方法会报错
解决:
A:在父类中加一个无参构造
B:通过使用super关键字去显示的调用父类的带参构造方法
C:子类通过this去调用本类的其他构造方法
子类中一定要有一个去访问了父类的构造方法,否则父类数据就没有初始化
注意事项:
this(...)或者super(...)必须出现在第一条语句上
如果不是放在第一条语句上,就可能对父类的数据进行了多次初始化,所以必须放在第一条语句上
*/
class Father{
public Father() {
System.out.println("Father的无参构造方法");
}
public Father(String name) {
System.out.println("Father的带参构造方法");
}
}
class Son extends Father{
public Son() {
super("随便给");
System.out.println("Son的无参构造方法");
}
public Son(String name) {
//super("随便给");
this();
System.out.println("Son的带参构造方法");
}
}
class extendsDemo {
public static void main(String args[]) {
Son s=new Son();
System.out.println("-------");
Son s2=new Son("***");
}
}