国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java的this關鍵字的使用與方法的重載相關知識

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

2020-01-06 14:33goldensun JAVA教程

這篇文章主要介紹了Java的this關鍵字的使用與方法的重載相關知識,是Java入門學習中的基礎知識,需要的朋友可以參考下

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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();
  }
}

運行結果:

?
1
x + y = 25

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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();
  }
}

運行結果:

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

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

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


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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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允許出現多個同名方法,只要參數不同就可以。后續章節會講解。
作為參數傳遞

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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!");
  }
}

運行結果:

?
1
2
Hello from A!
Hello from B!

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

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

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

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

下面看一個詳細的實例。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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);
  }
}

運行結果:

?
1
2
3
4
No parameters
a: 2
a and b: 2 3
double a: 2.0

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

說明:

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

方法的重載的規則:

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 一区二区三区视频 | 一级黄色免费网站 | 久热久热 | 日韩午夜免费 | 日日干夜夜骑 | 亚洲激情欧美 | 一级黄色片子看看 | 先锋影音av资源站 | 亚洲成人午夜电影 | 国产一级一级毛片女人精品 | 久久综合99| 成人在线观看免费爱爱 | 久久免费精品视频 | 亚洲综合色网 | 九九热精品在线 | 日韩视频在线免费观看 | 精品一级 | 日韩欧美h | 毛片免费在线播放 | 久久亚 | 99手机在线视频 | 国产黄色免费网站 | 久久综合久久受 | 亚洲一区中文字幕在线观看 | 亚洲视频免费观看 | 精品免费在线 | 久久久精品网站 | 国产一区二区三区在线免费观看 | 在线国产视频观看 | 亚洲精品国产片 | 成人网18免费网站 | 欧美999| 黄色av网站免费 | 天堂资源网 | 国产精品久久久久久久久久免费看 | 亚洲精品日韩综合观看成人91 | 国产高清av在线播放 | 黄色一级毛片a | 成人午夜免费视频 | 91资源在线 | 亚洲精品一区在线观看 |