java中this 和 super關鍵字的作用

來源:互聯網
上載者:User

標籤:沒有   必須   通過   etag   錯誤   name   gpo   調用   pos   

emmmmmm也真的是好久沒有寫過java了,
因為項目需要, 最近又必須重新拾起來了,雖然好多東西也都忘得差不多了....

然後發現 竟然把super和this傻傻分不清....

開個文章記錄一下:

一、this關鍵字主要有三個應用:

 (1)this調用本類中的屬性,也就是類中的成員變數; (2)this調用本類中的其他方法; (3)this調用本類中的其他構造方法,調用時要放在構造方法的首行。


 應用一
1 Public Class Student { 2  int age; //定義一個成員變數int3  private void SetAge(int name) { //定義一個參數(局部變數)int4   this.age=age; //將局部變數的值傳遞給成員變數5  }6 }  

 

 

     這時候,我們程式有倆name  作為區分,this.name的強調是特指局部變數的name

而我們通過this.name=name  來表示  將成員變數傳遞給局部變數

應用二:調用類的構造方法
1 public class Student { //定義一個類,類的名字為student。 2  public Student() { //定義一個方法,名字與類相同故為構造方法3   this(“Hello!”);4  }5  public Student(String name) { //定義一個帶形式參數的構造方法6  }7 }
this關鍵字除了可以調用成員變數之外,還可以調用構造方法。
在一個Java類中,其方法可以分為成員方法和構造方法兩種。
構造方法是一個與類同名的方法,在Java類中必須存在一個構造方法。
如果在代碼中沒有顯示的體現構造方法的話,那麼編譯器在編譯的時候會自動添加一個沒有形式參數的構造方法。
這個構造方法跟普通的成員方法還是有很多不同的地方。
如構造方法一律是沒有傳回值的,而且也不用void關鍵字來說明這個構造方法沒有傳回值。
而普通的方法可以有傳回值、也可以沒有傳回值,程式員可以根據自己的需要來定義。不過如果普通的方法沒有傳回值的話,
那麼一定要在方法定義的時候採用void關鍵字來進行說明。其次構造方法的名字有嚴格的要求,即必須與類的名字相同。
也就是說,Java編譯器發現有個方法與類的名字相同才把其當作構造方法來對待。
而對於普通方法的話,則要求不能夠與類的名字相同,而且多個成員方法不能夠採用相同的名字。在一個類中可以存在多個構造方法,這些構造方法都採用相同的名字,只是形式參數不同。
Java語言就憑形式參數不同來判斷調用那個構造方法。 在上面這段代碼中,定義了兩個構造方法,一個帶參數,另一個沒有帶參數。
構造方法都不會有傳回值,不過由於構造方法的特殊性,為此不必要在構造方法定義時帶上void關鍵字來說明這個問題。
在第一個沒有帶參數的構造方法中,使用了this(“Hello!”)這句代碼,這句代碼錶示什麼含義呢?在構造方法中使this關鍵字表示調用類中的構造方法。
如果一個類中有多個構造方法,因為其名字都相同,跟類名一致,那麼這個this到底是調用哪個構造方法呢?
其實,這跟採用其他方法引用構造方法一樣,都是通過形式參數來調用構造方法的。如上例中,this關鍵字後面加上了一個參數,那麼就表示其引用的是帶參數的構造方法。
如果現在有三個構造方法,分別為不帶參數、帶一個參數、帶兩個參數。那麼Java編譯器會根據所傳遞的參數數量的不同,來判斷該調用哪個構造方法。從上面樣本中可以看出,this關鍵字不僅可以用來引用成員變數,而且還可以用來引用構造方法。 不過如果要使用這種方式來調用構造方法的話,有一個文法上的限制。
一般來說,利用this關鍵字來調用構造方法,只有在無參數構造方法中第一句使用this調用有參數的構造方法。否則的話,翻譯的時候,就會有錯誤資訊。這跟引用成員變數不同。如果引用成員變數的話,this關鍵字是沒有位置上的限制的。如果不熟悉這個限制的話,那麼還是老老實實的採用傳統的構造方法調用方式為好。雖然比較麻煩,但是至少不會出錯。

 

java中this 和 super關鍵字的作用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.