程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java的this症結字的應用與辦法的重載相干常識

Java的this症結字的應用與辦法的重載相干常識

編輯:關於JAVA

Java的this症結字的應用與辦法的重載相干常識。本站提示廣大學習愛好者:(Java的this症結字的應用與辦法的重載相干常識)文章只能為提供參考,不一定能成為您想要的結果。以下是Java的this症結字的應用與辦法的重載相干常識正文


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 parameters
a: 2
a and b: 2 3
double a: 2.0

經由過程下面的實例,讀者可以看出,重載就是在一個類中,有雷同的函數稱號,但形參分歧的函數。重載的成果,可讓一個法式段盡可能削減代碼和辦法的品種。

解釋:

  • 參數列表分歧包含:個數分歧、類型分歧溫柔序分歧。
  • 僅僅參數變量稱號分歧是弗成以的。
  • 跟成員辦法一樣,結構辦法也能夠重載。
  • 聲明為final的辦法不克不及被重載。
  • 聲明為static的辦法不克不及被重載,然則可以或許被再次聲明。

辦法的重載的規矩:

  • 辦法稱號必需雷同。
  • 參數列表必需分歧(個數分歧、或類型分歧、參數分列次序分歧等)。
  • 辦法的前往類型可以雷同也能夠不雷同。
  • 僅僅前往類型分歧缺乏以成為辦法的重載。

辦法重載的完成:
辦法稱號雷同時,編譯器會依據挪用辦法的參數個數、參數類型等去逐一婚配,以選擇對應的辦法,假如婚配掉敗,則編譯器報錯,這叫做重載分辯。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved