Java中super和this關(guān)鍵字詳解
父類(lèi)空間優(yōu)先于子類(lèi)對(duì)象產(chǎn)生
在每次創(chuàng)建子類(lèi)對(duì)象時(shí),先初始化父類(lèi)空間,再創(chuàng)建其子類(lèi)對(duì)象本身。目的在于子類(lèi)對(duì)象中包含了其對(duì)應(yīng)的父類(lèi)空間,便可以包含其父類(lèi)的成員,如果父類(lèi)成員非private修飾,則子類(lèi)可以隨意使用父類(lèi)成員。代碼體現(xiàn)在子類(lèi)的構(gòu)造方法調(diào)用時(shí),一定先調(diào)用父類(lèi)的構(gòu)造方法。
理解圖解如下:

super和this的含義
super :代表父類(lèi)的存儲(chǔ)空間標(biāo)識(shí)(可以理解為父親的引用)。 this :代表當(dāng)前對(duì)象的引用(誰(shuí)調(diào)用就代表誰(shuí))。
super和this的用法
訪(fǎng)問(wèn)成員:
this.成員變量 ‐‐ 本類(lèi)的 super.成員變量 ‐‐ 父類(lèi)的 this.成員方法名() ‐‐ 本類(lèi)的 super.成員方法名() ‐‐ 父類(lèi)的
用法演示,代碼如下:
class Animal {
public void eat() {
System.out.println("animal : eat");
}
}
class Cat extends Animal {
public void eat() {
System.out.println("cat : eat");
}
public void eatTest() {
this.eat(); // this 調(diào)用本類(lèi)的方法
super.eat(); // super 調(diào)用父類(lèi)的方法
}
}
public class ExtendsDemo08 {
public static void main(String[] args) {
Animal a = new Animal();
a.eat();
Cat c = new Cat();
c.eatTest();
}
}輸出結(jié)果為:
animal : eat
cat : eat
animal : eat
訪(fǎng)問(wèn)構(gòu)造方法:
this(...) ‐‐ 本類(lèi)的構(gòu)造方法 super(...) ‐‐ 父類(lèi)的構(gòu)造方法
子類(lèi)的每個(gè)構(gòu)造方法中均有默認(rèn)的super(),調(diào)用父類(lèi)的空參構(gòu)造。手動(dòng)調(diào)用父類(lèi)構(gòu)造會(huì)覆蓋默認(rèn)的super()。 super() 和 this() 都必須是在構(gòu)造方法的第一行,所以不能同時(shí)出現(xiàn)。
繼承的特點(diǎn)
1.Java只支持單繼承,不支持多繼承。
//一個(gè)類(lèi)只能有一個(gè)父類(lèi),不可以有多個(gè)父類(lèi)。 class C extends A{} //ok class C extends A,B... //error
2.Java支持多層繼承(繼承體系)。
class A{} class B extends A{} class C extends B{}
頂層父類(lèi)是Object類(lèi)。所有的類(lèi)默認(rèn)繼承Object,作為父類(lèi)。
3.子類(lèi)和父類(lèi)是一種相對(duì)的概念。
到此這篇關(guān)于Java中super和this關(guān)鍵字詳解的文章就介紹到這了,更多相關(guān)Java super和this內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java面向?qū)ο笾甪inal關(guān)鍵字詳細(xì)解讀
這篇文章主要介紹了Java面向?qū)ο笾甪inal關(guān)鍵字詳細(xì)解讀,final修飾的屬性又叫常量,一般用 XX_XX_XX來(lái)命名,final修飾的屬性在定義時(shí)必須賦初始值,并且以后不能再修改,需要的朋友可以參考下2024-01-01
spring boot配合前端實(shí)現(xiàn)跨域請(qǐng)求訪(fǎng)問(wèn)
本篇文章主要介紹了spring boot配合前端實(shí)現(xiàn)跨域請(qǐng)求訪(fǎng)問(wèn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04
Java?Thread?類(lèi)和Runnable?接口詳解
這篇文章主要介紹了Java?Thread?類(lèi)和Runnable接口詳解,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-08-08
Jmeter內(nèi)置變量vars和props的使用詳解
JMeter是一個(gè)功能強(qiáng)大的負(fù)載測(cè)試工具,它提供了許多有用的內(nèi)置變量來(lái)支持測(cè)試過(guò)程,其中最常用的變量是 vars 和 props,本文通過(guò)代碼示例詳細(xì)給大家介紹了Jmeter內(nèi)置變量vars和props的使用,需要的朋友可以參考下2024-08-08
使用Java代碼實(shí)現(xiàn)RocketMQ的生產(chǎn)與消費(fèi)消息
這篇文章介紹一下其他的小組件以及使用Java代碼實(shí)現(xiàn)生產(chǎn)者對(duì)消息的生成,消費(fèi)者消費(fèi)消息等知識(shí)點(diǎn),并通過(guò)代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-07-07
java操作mongodb實(shí)現(xiàn)CURD功能實(shí)例
mongodb支持多種語(yǔ)言,并且提供了多種語(yǔ)言的驅(qū)動(dòng),本文使用java操作mongodb實(shí)現(xiàn)CURD功能,大家參考使用吧2013-12-12
基于Process#waitFor()阻塞問(wèn)題的解決
這篇文章主要介紹了Process#waitFor()阻塞問(wèn)題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12

