JAVA-this和super的用法

(一)this的做用java

  • 1.普通的直接引用(利用this表示當前對象)
  • 2.形參與成員名字重名,用this來區分
  • public int GetAge(int age){
            this.age = age;
            return this.age;
        }
  • 3.引用自身構造函數

(二)super的做用函數

  • super能夠理解爲是指向本身超類對象的一個指針,而這個超類指的是離本身最近的一個父類。
  • 1.普通的直接引用
  • 2.子類中的成員變量或方法與父類中的成員變量或方法同名
  • 3.引用構造函數

 (三)this和super的異同及使用this

  • 異同:
  • super(參數):調用基類中的某一個構造函數(應該爲構造函數中的第一條語句) 
  • this(參數):調用本類中另外一種造成的構造函數(應該爲構造函數中的第一條語句)
  • super: 它引用當前對象的直接父類中的成員(用來訪問直接父類中被隱藏的父類中成員數據或函數,基類與派生類中有相同成員定義時如:super.變量名    super.成員函數據名(實參)
  • this:它表明當前對象名(在程序中易產生二義性之處,應使用this來指明當前對象;若是函數的形參與類中的成員數據同名,這時需用this來指明成員變量名)
  • super()和this()相似,區別是,super()從子類中調用父類的構造方法,this()在同一類內調用其它方法。
  • 使用:
  • super()和this()均需放在構造方法內第一行。
  • 儘管能夠用this調用一個構造器,但卻不能調用兩個。
  • 調用super()必須寫在子類構造方法的第一行,不然編譯不經過。每一個子類構造方法的第一條語句,都是隱含地調用super(),若是父類沒有這種形式的構造函數,那麼在編譯的時候就會報錯。
  • this和super不能同時出如今一個構造函數裏面,由於this必然會調用其它的構造函數,其它的構造函數必然也會有super語句的存在,因此在同一個構造函數裏面有相同的語句,就失去了語句的意義,編譯器也不會經過。
  • this()和super()都指的是對象,因此,均不能夠在static環境中使用。包括:static變量,static方法,static語句塊。
  • 注:從本質上講,this是一個指向本對象的指針, 然而super是一個Java關鍵字。 
  • 區別點 this super
    訪問屬性 訪問本類屬性,若是沒有在父類中查找 訪問父類中的屬性
    調用方法 訪問本類方法 直接訪問父類中的方法
    調用構造器 調用本類構造器,必須放在構造器的首行 調用父類構造器,必須放在子類構造器首行
    本質 指向本類對象的指針 super只是一個Java關鍵字
相關文章
相關標籤/搜索