日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java重载this_Java的this关键字的使用与方法的重载相关知识

發(fā)布時間:2024/7/23 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java重载this_Java的this关键字的使用与方法的重载相关知识 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Java this關(guān)鍵字詳解

this 關(guān)鍵字用來表示當前對象本身,或當前類的一個實例,通過 this 可以調(diào)用本對象的所有方法和屬性。例如:

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();

}

}

運行結(jié)果:

x + y = 25

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

注意:this 只有在類實例化后才有意義。

使用this區(qū)分同名變量

成員變量與方法內(nèi)部的變量重名時,希望在方法內(nèi)部調(diào)用成員變量,怎么辦呢?這時候只能使用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("網(wǎng)站的名字是" + name + ",已經(jīng)成立了" + age + "年");

}

public static void main(String[] args) {

Demo obj = new Demo("微學(xué)苑", 3);

obj.say();

}

}

運行結(jié)果:

網(wǎng)站的名字是微學(xué)苑,已經(jīng)成立了3年

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

public void say(){

System.out.println("網(wǎng)站的名字是" + this.name + ",已經(jīng)成立了" + this.age + "年");

}

Java 默認將所有成員變量和成員方法與 this 關(guān)聯(lián)在一起,因此使用 this 在某些情況下是多余的。

作為方法名來初始化對象

也就是相當于調(diào)用本類的其它構(gòu)造方法,它必須作為構(gòu)造方法的第一句。示例如下:

public class Demo{

public String name;

public int age;

public Demo(){

this("微學(xué)苑", 3);

}

public Demo(String name, int age){

this.name = name;

this.age = age;

}

public void say(){

System.out.println("網(wǎng)站的名字是" + name + ",已經(jīng)成立了" + age + "年");

}

public static void main(String[] args) {

Demo obj = new Demo();

obj.say();

}

}

運行結(jié)果:

網(wǎng)站的名字是微學(xué)苑,已經(jīng)成立了3年

值得注意的是:

在構(gòu)造方法中調(diào)用另一個構(gòu)造方法,調(diào)用動作必須置于最起始的位置。

不能在構(gòu)造方法以外的任何方法內(nèi)調(diào)用構(gòu)造方法。

在一個構(gòu)造方法內(nèi)只能調(diào)用一個構(gòu)造方法。

上述代碼涉及到方法重載,即Java允許出現(xiàn)多個同名方法,只要參數(shù)不同就可以。后續(xù)章節(jié)會講解。

作為參數(shù)傳遞

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

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!");

}

}

運行結(jié)果:

Hello from A!

Hello from B!

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

Java方法重載

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

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

重載是面向?qū)ο蟮囊粋€基本特性。

下面看一個詳細的實例。

public class Demo{

// 一個普通的方法,不帶參數(shù)

void test(){

System.out.println("No parameters");

}

// 重載上面的方法,并且?guī)Я艘粋€整型參數(shù)

void test(int a){

System.out.println("a: " + a);

}

// 重載上面的方法,并且?guī)Я藘蓚€參數(shù)

void test(int a,int b){

System.out.println("a and b: " + a + " " + b);

}

// 重載上面的方法,并且?guī)Я艘粋€雙精度參數(shù)

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);

}

}

運行結(jié)果:

No parameters

a: 2

a and b: 2 3

double a: 2.0

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

說明:

參數(shù)列表不同包括:個數(shù)不同、類型不同和順序不同。

僅僅參數(shù)變量名稱不同是不可以的。

跟成員方法一樣,構(gòu)造方法也可以重載。

聲明為final的方法不能被重載。

聲明為static的方法不能被重載,但是能夠被再次聲明。

方法的重載的規(guī)則:

方法名稱必須相同。

參數(shù)列表必須不同(個數(shù)不同、或類型不同、參數(shù)排列順序不同等)。

方法的返回類型可以相同也可以不相同。

僅僅返回類型不同不足以成為方法的重載。

方法重載的實現(xiàn):

方法名稱相同時,編譯器會根據(jù)調(diào)用方法的參數(shù)個數(shù)、參數(shù)類型等去逐個匹配,以選擇對應(yīng)的方法,如果匹配失敗,則編譯器報錯,這叫做重載分辨。

總結(jié)

以上是生活随笔為你收集整理的java重载this_Java的this关键字的使用与方法的重载相关知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。