Java中super關鍵字的用法及示例
主要是由Hadoop中的函數想到的,以前對super不太明白,寫了幾段代碼搞懂了。
@Override
protected void setup(Context context) throws IOException,
InterruptedException {
super.setup(context);
}
(1)子類的構造函數如果要引用super的話,必須把super放在函數的首位.
class Base {
Base() {
System.out.println("Base");
}
}
public class Child extends Base {
Child() {
super();//調用父類的構造方法,一定要放在方法的首個語句
System.out.println("Child");
}
public static void main(String argv[]) {
Child c = new Child();
}
}
如果想用super繼承父類構造的方法,但是沒有放在第一行的話,那麼在super之前的語句,肯定是爲了滿足自己想要完成某些行爲的語句,但是又用了super繼承父類的構造方法。那麼以前所做的修改就都回到以前了,就是說又成了父類的構造方法了。
在Eclipse中,如果不放在首位,報錯:Constructor call must be the first statement in a constructor。
不用顯示調用,也可以。我估計是,如果構造函數有多個的時候,可以顯示指明哪一個。
(2)在Java中,有時還會遇到子類中的成員變量或方法與超類(有時也稱父類)中的成員變量或方法同名。因爲子類中的成員變量或方法名優先級高,所以子類中的同名成員變量或方法就隱藏了超類的成員變量或方法,但是我們如果想要使用超類中的這個成員變量或方法,就需要用到super.
class Country {
String name="China";
// private String name="China";//不能定義爲私有成員變量,否則在子類中就不能玩耍了
String value(String name) {
this.name = name;
return this.name;
}
}
class City extends Country {
String name = "Shijiazhuang";
String value(String name) {
System.out.println(super.name);
super.value("Fail");
System.out.println(name);
System.out.println(super.name);
return name;
}
public static void main(String[] args) {
City c=new City();
c.value("Sucess");
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.