Java中super與this關(guān)鍵字的用途及區(qū)別詳解
super關(guān)鍵字
super是Java中的一個(gè)引用變量,用于引用直接父類對(duì)象。
主要用途:
訪問(wèn)父類的成員變量:當(dāng)子類和父類有同名變量時(shí)
super.variableName;
調(diào)用父類的方法:特別是當(dāng)子類重寫了父類方法時(shí)
super.methodName();
調(diào)用父類的構(gòu)造器:必須在子類構(gòu)造器的第一行
super(); // 或 super(parameters);
this關(guān)鍵字
this是Java中的一個(gè)引用變量,用于引用當(dāng)前對(duì)象。
主要用途:
引用當(dāng)前對(duì)象的成員變量:解決局部變量與成員變量同名的問(wèn)題
this.variableName = variableName;
調(diào)用當(dāng)前類的方法:明確調(diào)用當(dāng)前類的方法
this.methodName();
調(diào)用當(dāng)前類的構(gòu)造器:必須在構(gòu)造器的第一行
this(); // 或 this(parameters);
作為參數(shù)傳遞:將當(dāng)前對(duì)象作為參數(shù)傳遞
method(this);
super與this的區(qū)別
| 特性 | super | this |
|---|---|---|
| 引用對(duì)象 | 父類對(duì)象 | 當(dāng)前對(duì)象 |
| 使用場(chǎng)景 | 主要用于繼承關(guān)系中 | 可用于任何類中 |
| 調(diào)用構(gòu)造器 | 必須位于子類構(gòu)造器第一行 | 必須位于構(gòu)造器第一行 |
| 訪問(wèn)權(quán)限 | 只能訪問(wèn)父類可見(jiàn)的成員 | 可以訪問(wèn)當(dāng)前類所有成員 |
| 鏈?zhǔn)秸{(diào)用 | 不能鏈?zhǔn)秸{(diào)用(super.super非法) | 可以鏈?zhǔn)秸{(diào)用(this.this非法) |
| 靜態(tài)上下文 | 不能在靜態(tài)方法/塊中使用 | 不能在靜態(tài)方法/塊中使用 |
代碼示例
class Parent {
String name = "Parent";
void display() {
System.out.println("Parent's display");
}
}
class Child extends Parent {
String name = "Child";
Child() {
this("Default"); // 調(diào)用本類的另一個(gè)構(gòu)造器
}
Child(String name) {
super(); // 調(diào)用父類構(gòu)造器
this.name = name;
}
void display() {
System.out.println("Child's display");
}
void show() {
System.out.println(super.name); // 訪問(wèn)父類的name
System.out.println(this.name); // 訪問(wèn)本類的name
super.display(); // 調(diào)用父類的display
this.display(); // 調(diào)用本類的display
}
}
public class Main {
public static void main(String[] args) {
Child child = new Child("Test");
child.show();
}
}輸出結(jié)果:
Parent
Test
Parent's display
Child's display
總結(jié)
使用
super主要是為了在子類中明確訪問(wèn)父類的成員,避免與子類成員混淆使用
this主要是為了在類內(nèi)部明確訪問(wèn)當(dāng)前對(duì)象的成員,避免與局部變量混淆兩者都可以用于構(gòu)造器調(diào)用,但都必須位于構(gòu)造器的第一行
在靜態(tài)上下文中,兩者都不能使用
到此這篇關(guān)于Java中super與this關(guān)鍵字的用途及區(qū)別詳解的文章就介紹到這了,更多相關(guān)Java中super與this關(guān)鍵字內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JVM類運(yùn)行機(jī)制實(shí)現(xiàn)原理解析
這篇文章主要介紹了JVM類運(yùn)行機(jī)制實(shí)現(xiàn)原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12
java中MultipartFile和File最簡(jiǎn)單的互相轉(zhuǎn)換示例
這篇文章主要給大家介紹了關(guān)于java中MultipartFile和File最簡(jiǎn)單的互相轉(zhuǎn)換的相關(guān)資料,MultipartFile和File都是Java中用于處理文件上傳的類,MultipartFile用于處理上傳的文件,File用于處理本地磁盤上的文件,需要的朋友可以參考下2023-09-09
SpringBoot實(shí)現(xiàn)無(wú)限級(jí)評(píng)論回復(fù)的項(xiàng)目實(shí)踐
本文主要介紹了SpringBoot實(shí)現(xiàn)無(wú)限級(jí)評(píng)論回復(fù)的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
SpringBoot中的@ConditionalOnMissingBean注解使用詳解
這篇文章主要介紹了SpringBoot中的@ConditionalOnMissingBean注解使用詳解,@ConditionalOnMissingBean作用在@Bean定義上,也就是說(shuō)在容器加載它作用的Bean時(shí),檢查容器中是否存在目標(biāo)類型,需要的朋友可以參考下2024-01-01
Springboot FeignClient調(diào)用Method has too m
本文主要介紹了Springboot FeignClient微服務(wù)間調(diào)用Method has too many Body parameters 解決,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
Spring Boot整合JWT的實(shí)現(xiàn)步驟
本文主要介紹了Spring Boot整合JWT,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08

