Android中比較常見的Java super關(guān)鍵字
super在android中比較常見,沒有java基礎(chǔ)也并不理解,所以空出時(shí)間學(xué)習(xí)了一下。
在Java類中使用super來引用基類的成分,比較簡(jiǎn)單,示例如下:
class FatherClass{
public int value;
public void f(){
value=100;
System.out.println
("FatherClass.value:"+value);
}
}
class ChildClass extends FatherClass{
public int value;
public void f(){
super.f();
value=200;
System.out.println
("ChildClass.value:"+value);
System.out.println(value);
System.out.println(super.value);
}
}
public class test1 {
public static void main(String[] args){
ChildClass cc=new ChildClass();
cc.f();
}
}
最終輸出的結(jié)果是:
FatherClass.value:100 ChildClass.value:200 200 100
另外繼承中的構(gòu)造也是用到了super,具體規(guī)則如下:
1、子類的構(gòu)造過程中必須調(diào)用其基類的構(gòu)造方法。
2、子類可以在自己的構(gòu)造方法中使用super(argument_list)調(diào)用基類的構(gòu)造方法。
3、如果子類的構(gòu)造方法中沒有顯示的調(diào)用基類的構(gòu)造方法,則系統(tǒng)默認(rèn)調(diào)用基類的無參數(shù)構(gòu)造方法。
4、如果子類構(gòu)造方法中既沒有顯示調(diào)用基類構(gòu)造方法,而基類又沒有無參數(shù)的構(gòu)造方法,則編譯出錯(cuò)。
示例如下:(此處最好可以自己試驗(yàn)一下)
class SuperClass{
private int n;
SuperClass(){
System.out.println("調(diào)用SuperClass()");
}
SuperClass(int n){
System.out.println("調(diào)用SuperClass("+n+")");
}
}
class SubClass extends SuperClass{
private int n;
SubClass(int n){
//當(dāng)子類的構(gòu)造方法中沒有寫super的時(shí)候,系統(tǒng)默認(rèn)的調(diào)用父類的沒有參數(shù)的構(gòu)造方法
//相當(dāng)于此處寫了如下:
//super();
System.out.println("調(diào)用SuberClass("+n+")");
this.n=n;
}
SubClass(){
super(300);
//在子類構(gòu)造過程當(dāng)中必須調(diào)用父類構(gòu)造方法,并且super必須寫在第一句(先有爸爸再有兒子)
System.out.println("調(diào)用SubClass()");
}
}
public class test2 {
public static void main(String[] args){
SubClass sc1=new SubClass();
SubClass sc2=new SubClass(400);
}
}
最終結(jié)果為:
調(diào)用SuperClass(300) 調(diào)用SubClass() 調(diào)用SuperClass() 調(diào)用SuberClass(400)
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
相關(guān)文章
解析Arthas協(xié)助排查線上skywalking不可用問題
這篇文章主要為大家介紹了解析Arthas協(xié)助排查線上skywalking不可用的問題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-02-02
Java String 和StringBuffer的詳解及區(qū)別
這篇文章主要介紹了Java String 和StringBuffer的詳解及區(qū)別的相關(guān)資料,需要的朋友可以參考下2017-05-05
深入探究一下Java中不同的線程間數(shù)據(jù)通信方式
這篇文章主要來和大家一起深入探究一下Java中不同的線程間數(shù)據(jù)通信方式,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2023-04-04
mybatis spring配置SqlSessionTemplate的使用方式
這篇文章主要介紹了mybatis spring配置SqlSessionTemplate的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
Java DefaultListableBeanFactory接口超詳細(xì)介紹
這篇文章主要介紹了Java DefaultListableBeanFactory接口,DefaultListableBeanFactory是整個(gè)bean加載的核心部分,是Spring注冊(cè)機(jī)加載bean的默認(rèn)實(shí)現(xiàn)2022-11-11
java多線程編程之InheritableThreadLocal
這篇文章主要為大家詳細(xì)介紹了java多線程編程之InheritableThreadLocal,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10

