調用了自己這個類的另外一個構造方法
this(name,school,”beijing”);
參數寫錯調整過來了
Student_LianXi_29 s1 = new Student_LianXi_29(“C”, “S1”);
本來堆內存中的“C”和“beijing”應該存在data seg裏面,應該是通過引用指向data seg裏面這個兩個值的,但是爲了方便看所以才這麼畫的
//第二個構造方法
Student_LianXi_29(String n,String l,String school) {
//設定Person_LianXi_29的private String name;和private String location;
super(n,l);
this.school = school;
}
調用完父類的構造方法 執行完 super(n,l);
//第二個構造方法
Student_LianXi_29(String n,String l,String school) {
//設定Person_LianXi_29的private String name;和private String location;
super(n,l);
this.school = school;
}
執行this.school = school;時
下面的這個方法執行結束時
//第二個構造方法
Student_LianXi_29(String n,String l,String school) {
//設定Person_LianXi_29的private String name;和private String location;
super(n,l);
this.school = school;
}
//第二個構造方法完成後返回給this(name,“beijing”,school);
所以第一個構造方法結束
//第一個構造方法
Student_LianXi_29(String name,String school) {
//調用了自己這個類的另外一個構造方法
//第一個構造方法調用了第二個構造方法
//第一個構造方法裏面的值把第二個的構造方法的值初始化了
this(name,“beijing”,school);
//把name傳給n
//把"beijing"傳給l
//把school傳給school
}
package pack03.TestTeacher;
class Person {
private String name;
private String location;
Person(String name) {
this.name = name;
location = "beijing";
}
Person(String name, String location) {
this.name = name;
this.location = location;
}
public String info() {
return "name: " + name + " location: " + location;
}
}
class Student extends Person {
private String school;
// 第一個構造方法
Student(String name, String school) {
// 調用了自己這個類的另外一個構造方法
// 第一個構造方法調用了第二個構造方法
// 第一個構造方法裏面的值把第二個的構造方法的值初始化了
this(name, "beijing", school);
// 把name傳給n
// 把"beijing"傳給l
// 把school傳給school
}
// 第二個構造方法
Student(String n, String l, String school) {
// 設定Person_LianXi_29的private String name;和private String location;
super(n, l);
this.school = school;
}
@Override
public String info() {
return super.info() + " school: " + school;
}
}
class Teacher extends Person {
private String capital;
// 第一個構造方法
Teacher(String name, String capital) {
this(name, "beijing", capital);
}
// 第二個構造方法
Teacher(String n, String l, String capital) {
//交給父類去處理
super(n, l);
this.capital = capital;
}
@Override
public String info() {
return super.info() + " capital: " + capital;
}
}
public class TestTeacher {
public static void main(String[] args) {
// TODO Auto-generated method stub
Person p1 = new Person("A");
Person p2 = new Person("A", "shanghai");
Student s1 = new Student("C", "S1");
Student s2 = new Student("C", "shanghai", "S2");
System.out.println(p1.info());
System.out.println(p2.info());
System.out.println(s1.info());
System.out.println(s2.info());
Teacher t1 = new Teacher("D", "Professor");
System.out.println(t1.info());
}
}