亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java的this關鍵字的使用與方法的重載相關知識

2019-11-26 14:58:16
字體:
來源:轉載
供稿:網友

Java this關鍵字詳解
this 關鍵字用來表示當前對象本身,或當前類的一個實例,通過 this 可以調用本對象的所有方法和屬性。例如:

public class Demo{  public int x = 10;  public int y = 15;  public void sum(){    // 通過 this 點取成員變量    int z = this.x + this.y;    System.out.println("x + y = " + z);  }   public static void main(String[] args) {    Demo obj = new Demo();    obj.sum();  }}

運行結果:

x + y = 25

上面的程序中,obj 是 Demo 類的一個實例,this 與 obj 等價,執行 int z = this.x + this.y;,就相當于執行 int z = obj.x + obj.y;。

注意:this 只有在類實例化后才有意義。
使用this區分同名變量

成員變量與方法內部的變量重名時,希望在方法內部調用成員變量,怎么辦呢?這時候只能使用this,例如:

public class Demo{  public String name;  public int age;   public Demo(String name, int age){    this.name = name;    this.age = age;  }   public void say(){    System.out.println("網站的名字是" + name + ",已經成立了" + age + "年");  }   public static void main(String[] args) {    Demo obj = new Demo("微學苑", 3);    obj.say();  }}

運行結果:

網站的名字是微學苑,已經成立了3年

形參的作用域是整個方法體,是局部變量。在Demo()中,形參和成員變量重名,如果不使用this,訪問到的就是局部變量name和age,而不是成員變量。在 say() 中,我們沒有使用 this,因為成員變量的作用域是整個實例,當然也可以加上 this:

public void say(){  System.out.println("網站的名字是" + this.name + ",已經成立了" + this.age + "年");} 


Java 默認將所有成員變量和成員方法與 this 關聯在一起,因此使用 this 在某些情況下是多余的。
作為方法名來初始化對象

也就是相當于調用本類的其它構造方法,它必須作為構造方法的第一句。示例如下:

public class Demo{  public String name;  public int age;    public Demo(){    this("微學苑", 3);  }   public Demo(String name, int age){    this.name = name;    this.age = age;  }   public void say(){    System.out.println("網站的名字是" + name + ",已經成立了" + age + "年");  }   public static void main(String[] args) {    Demo obj = new Demo();    obj.say();  }}

運行結果:
網站的名字是微學苑,已經成立了3年

值得注意的是:
在構造方法中調用另一個構造方法,調用動作必須置于最起始的位置。
不能在構造方法以外的任何方法內調用構造方法。
在一個構造方法內只能調用一個構造方法。

上述代碼涉及到方法重載,即Java允許出現多個同名方法,只要參數不同就可以。后續章節會講解。
作為參數傳遞

需要在某些完全分離的類中調用一個方法,并將當前對象的一個引用作為參數傳遞時。例如:

public class Demo{  public static void main(String[] args){    B b = new B(new A());  }}class A{  public A(){    new B(this).print(); // 匿名對象  }  public void print(){    System.out.println("Hello from A!");  }}class B{  A a;  public B(A a){    this.a = a;  }  public void print() {    a.print();    System.out.println("Hello from B!");  }}

運行結果:

Hello from A!Hello from B!

匿名對象就是沒有名字的對象。如果對象只使用一次,就可以作為匿名對象,代碼中 new B(this).print(); 等價于 ( new B(this) ).print();,先通過 new B(this) 創建一個沒有名字的對象,再調用它的方法。

Java方法重載
在Java中,同一個類中的多個方法可以有相同的名字,只要它們的參數列表不同就可以,這被稱為方法重載(method overloading)。

參數列表又叫參數簽名,包括參數的類型、參數的個數和參數的順序,只要有一個不同就叫做參數列表不同。

重載是面向對象的一個基本特性。

下面看一個詳細的實例。

public class Demo{  // 一個普通的方法,不帶參數  void test(){    System.out.println("No parameters");  }  // 重載上面的方法,并且帶了一個整型參數  void test(int a){    System.out.println("a: " + a);  }  // 重載上面的方法,并且帶了兩個參數  void test(int a,int b){    System.out.println("a and b: " + a + " " + b);  }  // 重載上面的方法,并且帶了一個雙精度參數  double test(double a){    System.out.println("double a: " + a);    return a*a;  }    public static void main(String args[]){    Demo obj= new Demo();    obj.test();    obj.test(2);    obj.test(2,3);    obj.test(2.0);  }}

運行結果:

No parametersa: 2a and b: 2 3double a: 2.0

通過上面的實例,讀者可以看出,重載就是在一個類中,有相同的函數名稱,但形參不同的函數。重載的結果,可以讓一個程序段盡量減少代碼和方法的種類。

說明:

  • 參數列表不同包括:個數不同、類型不同和順序不同。
  • 僅僅參數變量名稱不同是不可以的。
  • 跟成員方法一樣,構造方法也可以重載。
  • 聲明為final的方法不能被重載。
  • 聲明為static的方法不能被重載,但是能夠被再次聲明。

方法的重載的規則:

  • 方法名稱必須相同。
  • 參數列表必須不同(個數不同、或類型不同、參數排列順序不同等)。
  • 方法的返回類型可以相同也可以不相同。
  • 僅僅返回類型不同不足以成為方法的重載。

方法重載的實現:
方法名稱相同時,編譯器會根據調用方法的參數個數、參數類型等去逐個匹配,以選擇對應的方法,如果匹配失敗,則編譯器報錯,這叫做重載分辨。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区三区直播精品电影| 日韩精品久久久久久福利| 国产精品白嫩美女在线观看| 亚洲一区二区中文| 日本高清视频一区| 欧美俄罗斯性视频| 激情久久av一区av二区av三区| 66m—66摸成人免费视频| 欧美精品一本久久男人的天堂| 久久久久久高潮国产精品视| 九九热r在线视频精品| 欧美资源在线观看| 日韩欧美在线免费观看| 欧美成人精品三级在线观看| 日韩中文字幕在线视频播放| 久久久久久国产精品三级玉女聊斋| 久久精品福利视频| 这里只有精品视频在线| 美女性感视频久久久| 91色中文字幕| 日韩高清电影免费观看完整| 欧美激情第99页| 午夜精品久久久久久久白皮肤| 黄色一区二区三区| 亚洲黄色www| 亚洲成人免费网站| 91精品国产777在线观看| 国产精品入口尤物| 日韩精品中文字幕久久臀| 亚洲裸体xxxx| 青青草原一区二区| 欧美激情一级二级| 国产精品旅馆在线| 欧美激情中文字幕乱码免费| 日韩av电影手机在线| 91精品国产自产91精品| 欧美黄网免费在线观看| 亚洲成人教育av| 亚洲精品动漫100p| 久热精品视频在线免费观看| 国产精品偷伦免费视频观看的| 超在线视频97| 国色天香2019中文字幕在线观看| 久久免费在线观看| 久久精品国产亚洲7777| 综合国产在线观看| 亚洲缚视频在线观看| 欧美激情中文字幕乱码免费| 91亚洲国产成人久久精品网站| 韩剧1988免费观看全集| 日韩精品欧美激情| 亚洲影影院av| 欧美福利视频在线| 欧美在线激情视频| 日韩极品精品视频免费观看| 久久高清视频免费| 欧美孕妇孕交黑巨大网站| 亚洲欧美在线一区| 精品国产一区二区三区久久| 国产精品久久久久久av下载红粉| 久久久久久久久国产精品| 中文字幕视频在线免费欧美日韩综合在线看| 97香蕉超级碰碰久久免费的优势| 91夜夜揉人人捏人人添红杏| 久久成人亚洲精品| 国产成人精品在线观看| 久久亚洲欧美日韩精品专区| 国产色婷婷国产综合在线理论片a| 欧美在线观看日本一区| 日本一区二三区好的精华液| 亚洲国产日韩精品在线| 中文字幕一区电影| 欧美精品国产精品日韩精品| 国产精品视频一区二区高潮| 这里只有视频精品| 一区二区三区在线播放欧美| 久久97久久97精品免视看| 亚洲国产精品久久精品怡红院| 欧美午夜影院在线视频| 亚洲а∨天堂久久精品喷水| 色婷婷**av毛片一区| 亚洲一区二区久久久久久久| 精品色蜜蜜精品视频在线观看| 亚洲福利视频专区| 久久久在线观看| www.xxxx欧美| 久久久久女教师免费一区| 中文字幕日韩精品在线| 日韩av片电影专区| 亚洲缚视频在线观看| 国产精品91久久| 浅井舞香一区二区| 国产成人av网| 亚洲社区在线观看| 久久久久久久久久久91| 亚洲国产欧美在线成人app| 亚洲人成网站免费播放| 国产做受高潮69| 日韩av免费网站| 91精品啪aⅴ在线观看国产| 亚洲第一男人av| 日韩在线视频网| 热门国产精品亚洲第一区在线| 日韩国产一区三区| 国产91|九色| 国产精品麻豆va在线播放| 久久久久久com| 欧亚精品在线观看| 国产精品情侣自拍| 精品国模在线视频| 亚洲一区二区三区视频| 在线看欧美日韩| 亚洲欧美制服另类日韩| 国产精品日韩欧美大师| 国产精品香蕉国产| 伊人一区二区三区久久精品| 97久久超碰福利国产精品…| 欧美剧在线观看| 久久久中文字幕| 亚洲开心激情网| 亚洲激情第一页| 国产午夜精品免费一区二区三区| 午夜美女久久久久爽久久| 国语自产在线不卡| 国产日韩在线看| 亚洲男人的天堂在线| 中文字幕日韩在线观看| 九九久久国产精品| 欧美成人午夜剧场免费观看| 亚洲欧美国产高清va在线播| 亚洲精品免费在线视频| 国产精品一香蕉国产线看观看| 亚洲一区二区免费在线| 国产午夜精品视频免费不卡69堂| www.亚洲一二| 久久久亚洲影院| 欧美亚洲日本网站| 性欧美视频videos6一9| 国产欧美一区二区三区久久人妖| 在线午夜精品自拍| 亚洲精品福利免费在线观看| 日韩va亚洲va欧洲va国产| 欧美日韩美女在线观看| 插插插亚洲综合网| 中文亚洲视频在线| 国产精品成人一区二区三区吃奶| 成人精品久久久| 日韩成人久久久| 亚洲最大福利视频网| 国产日产欧美精品| 亚洲精品视频久久| 欧美一区二区三区四区在线| 亚洲欧美在线一区二区| 国产va免费精品高清在线观看| 98精品国产高清在线xxxx天堂| 国产成人精品av| 成人性生交大片免费观看嘿嘿视频| 久久精品国产电影| 国产成人在线一区二区| 亚洲一区二区三区在线免费观看| 国产日韩欧美在线| 成人h猎奇视频网站| 国产精品久久久久久av下载红粉| 成人免费高清完整版在线观看|