this和super的區別

this和super的區別

先講this和super的作用

this:表示本類屬性、表示本類方法和當前對象,俏皮的說是自己用的
super:調用父類的構造方法,俏皮的說是爸爸專用

1.this:每個類的每個非靜態方法(沒有被static修飾)都會隱含一個this關鍵字,它指向調用這個方法的對象;當在方法中使用本類屬性時,都會隱含地使用this關鍵字,當然也可以明確使用。

三種用法:
一:普通的直接引用、
二:參與成員名字重名的時候,用 this 來區分、
三:引用構造函數(引用構造函數的時候要放在函數第一行)

2.super: 可以理解爲是指向自己超(父)類對象的一個指針,而這個超類指的是離自己最近的一個父類(親生爸爸)。

super也有三種用法:

  1. 普通的直接引用、與 this 類似,super 相當於是指向當前對象的父類,這樣就可以用 super.xxx 來引用父類的成員。
  2. 子類中的成員變量或方法與父類中的成員變量或方法同名,調用父類的方法
  3. 而且是兩者都有的屬性、引用構造函數
  • super(參數):調用父類中的某一個構造函數(應該爲構造函數中的第一條語句)。
  • this(參數):調用本類中另一種形式的構造函數(應該爲構造函數中的第一條語句)。

兩者的異同

  • this 和 super 不能同時出現在一個構造函數裏面,因爲this必然會調用其它的構造函數,其它的構造函數必然也會有 super 語句的存在,所以在同一個構造函數裏面有相同的語句,就失去了語句的意義,編譯器也不會通過。
  • this() 和 super() 都指的是對象,所以,均不可以在 static 環境中使用。包括:static 變量,static 方法,static 語句塊。
  • 從本質上講,this 是一個指向本對象的指針, 然而 super 是一個 Java 關鍵字。 super代表的是父類空間的引用,his代表的是所屬函數的調用者對象.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章