super關鍵字
1.super可用於訪問父類中定義的屬性
2.super可用於調用父類中定義的成員方法
3.super可用於在子類構造中調用父類的構造器
注意:
當子類與父類中有同名的屬性時,可以通過”super.屬性”顯式的調用弗雷中聲明的屬性
當子類中重寫父類的方法以後,在子類中若想再顯式的調用父類的被重寫的方法,就需要使用”super.方法”
super修飾構造器,通過在子類中使用”super(形參列表)”來顯式的調用父類中指定的構造器
在構造內部,”super(形參列表)”必須要聲明在首行
在構造器內部,”this(形參列表)”或”super(形參列表)”只能出一個
當構造器中,不顯式的調用”this(形參列表)”或”super(形參列表)”其中任何一個,默認調用的是父類中的空參構造器
建議:設計一個類時,儘量要提供一個空參的構造器
class Fu {
Fu() {
System.out.println("fu");
}
}
public class Zi extends Fu {
Zi() {
super();//調用父類的構造方法,一定要放在方法的首個語句
System.out.println("Zi");
}
public static void main(String argv[]) {
Checket c = new Checket();}
}
class Person {
public static void prt(String s) {
System.out.println(s);
}
Person() {
prt("A Person.");
}
Person(String name) {
prt("A person name is:" + name);
}
}
public class Chinese extends Person {
Chinese() {
super(); // 調用父類構造函數(1)
prt("A chinese.");// (4)
}
Chinese(String name) {
super(name);// 調用父類具有相同形參的構造函數(2)
prt("his name is:" + name);
}
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("kevin");
cn = new Chinese("kevin", 22);
}
}
輸出結果爲:
A Person.
A chinese.
A person name is:kevin
his name is:kevin
A person name is:kevin
his name is:kevin
his age is:22
this關鍵字詳見:http://blog.csdn.net/uponz/article/details/79101175
this,super區別詳見:http://blog.csdn.net/uponz/article/details/79116429