this,super關鍵字區別

這裏寫圖片描述

屬性的區別:

  • this訪問本類中的屬性,如果本類沒有此屬性則從父類中繼續查找。super訪問父類中的屬性。

方法的區別:

  • this訪問本類中的方法,如果本類沒有此方法則從父類中繼續查找。super訪問父類中的方法。

構造的區別:

  • this調用本類構造,必須放在構造方法的首行。super調用父類構造,必須放在子類構造方法首行。

其他區別:

  • this表示當前對象。super不能表示當前對象

1、this. 變量和super.變量

  • this.變量 調用的當前對象的變量;

  • super.變量 直接調用的是父類中的變量。

2、this(參數)和super(參數)方法

  • this(參數) 調用(轉發)的是當前類中的構造器;

  • super(參數) 用於確認要使用父類中的哪一個構造器。

注意點:

  1. 在對擁有父類的子類進行初始化時,父類的構造方法也會執行,且優先於子類的構造函數執行;因爲每一個子類的構造函數中的第一行都有一條默認的隱式語句super();

  2. this() 和super()都只能寫在構造函數的第一行;

  3. this() 和super()
    不能存在於同一個構造函數中。第一,this()和super()都必須寫在構造函數的第一行;第二,this()語句調用的是當前類的另一個構造函數而這個另一個構造函數中必然有一個父類的構造器,再使用super()又調用一次父類的構造器,就相當於調用了兩次父類的構造器,編譯器不會通過;

  4. this和super不能用於static修飾的變量,方法,代碼塊;因爲this和super都是指的是對象(實例)。

this關鍵字詳見:http://blog.csdn.net/uponz/article/details/79101175
super關鍵字詳見:http://blog.csdn.net/uponz/article/details/79101357

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章