下面贴点源码,想测试的直接拿
public abstract class FatherDemo {
private String fatherId = "初始参数fatherId";
public FatherDemo() {
System.out.println("FatherDemo的无参构造函数");
}
public FatherDemo(Student student) {
fatherId = "测试参数";
this.init(student);
}
protected abstract void init(Student student);
}
public class SonDemoImpl extends FatherDemo {
public static void main(String[] args) {
Student param = new Student();
param.setName("student测试参数name");
param.setAge("student测试参数age");
SonDemoImpl sonDemo = new SonDemoImpl(param);
System.out.println(sonDemo);
}
private String name = "11";
private String age = "22";
public SonDemoImpl() {
System.out.println("son的无参构造函数");
}
/**
* 所以说,构造函数只会被调用一个,并且默认值会在调用完super之后被赋值
* @param student
*/
public SonDemoImpl(Student student) {
super(student);
}
@Override
protected void init(Student student) {
this.setName(student.getName());
this.setAge(student.getAge());
}
@Override
public String toString() {
return "SonDemoImpl{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
"} " + super.toString();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
public class Student {
private String name;
private String age;
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}