Java中super和this的用法詳解
super 用法
super關(guān)鍵字用來訪問父類內(nèi)容,具體用法可分為三種:
1.子類的成員方法訪問父類的成員變量
public class Animal { public int age = 10; } class Dog extends Animal { public int age = 5; public void showAge() { System.out.println(super.age); } }
2.子類的成員方法訪問父類的成員方法
public class Animal { public void fn(){ System.out.println("父類Animal的方法"); } } class Dog extends Animal { @Override public void fn() { super.fn(); System.out.println("子類Dog的方法"); } }
3.子類的構(gòu)造方法訪問父類的構(gòu)造方法
public class Animal { public Animal() { System.out.println("父類Animal的構(gòu)造方法"); } } class Dog extends Animal { public Dog() { super(); System.out.println("子類Dog的構(gòu)造方法"); } }
this 用法
this關(guān)鍵字用來訪問本類內(nèi)容,具體用法可分為三種:
1.本類的成員方法訪問本類的成員變量
public class Dog extends Animal { public int age = 1; public void showAge() { int age = 3; System.out.println(age); System.out.println(this.age); } }
2.本類的成員方法訪問本類的另一成員方法
public class Dog extends Animal { public int age = 1; public void showAge() { int age = 3; System.out.println(age); System.out.println(this.age); } public void fn() { this.showAge(); } }
3.本類的構(gòu)造方法訪問本類的另一個(gè)構(gòu)造方法,此時(shí)this(…)調(diào)用必須放在這個(gè)構(gòu)造方法中的第一句,且只能使用一次
public class Dog extends Animal { public Dog() { this(2); System.out.println("無參構(gòu)造"); } public Dog(int age) { System.out.println(age); System.out.println("有參構(gòu)造"); } }
super和this內(nèi)存圖解
- 方法區(qū)中存放包含主方法的Demo、父類和子類的class對(duì)象,編譯后在子類的class對(duì)象中會(huì)有一個(gè)super_class標(biāo)記指向父類,表明二者的繼承關(guān)系
- 主方法進(jìn)棧,執(zhí)行語句new一個(gè)子類對(duì)象,棧中存放該對(duì)象的地址值,指向堆中開辟的一塊用于存放該子類對(duì)象的內(nèi)存,注意堆中子類對(duì)象內(nèi)容還包括完整的父類結(jié)構(gòu)
- 主方法中執(zhí)行子類的show方法,show方法進(jìn)棧,棧中存放show方法中的局部變量num,輸出局部變量num的值,接著輸出this.num,this指向子類對(duì)象,this.num得到堆中子類變量num的值,最后輸出super.num得到的是堆中存儲(chǔ)的父類變量的值
- 主方法執(zhí)行子類的method方法,子類method方法進(jìn)棧,子類method方法中使用super.method()調(diào)用父類的method方法,父類的method方法進(jìn)棧
總結(jié)
到此這篇關(guān)于Java中super和this的用法的文章就介紹到這了,更多相關(guān)Java中super和this的用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- java中this與super關(guān)鍵字的使用方法
- Java中的構(gòu)造方法this、super的用法詳解
- java基礎(chǔ)知識(shí) super和this使用解析
- Java this super代碼實(shí)例及使用方法總結(jié)
- 關(guān)于java關(guān)鍵字this和super的區(qū)別和理解
- Java中超詳細(xì)this與super的概念和用法
- Java 中的 this 和 super 區(qū)別
- Java關(guān)鍵字this與super詳解用法
- Java中super和this關(guān)鍵字詳解
- Java中this和super關(guān)鍵字的使用詳解
- JavaSE面試題之this與super關(guān)鍵字的區(qū)別詳解
- Java中 this和super的用法與區(qū)別小結(jié)
相關(guān)文章
Mybatis入門指南之實(shí)現(xiàn)對(duì)數(shù)據(jù)庫增刪改查
數(shù)據(jù)持久層主要負(fù)責(zé)數(shù)據(jù)的增、刪、改、查等功能,MyBatis 則是一款優(yōu)秀的持久層框架,下面這篇文章主要給大家介紹了關(guān)于Mybatis入門指南之實(shí)現(xiàn)對(duì)數(shù)據(jù)庫增刪改查的相關(guān)資料,需要的朋友可以參考下2022-10-10JVM內(nèi)存結(jié)構(gòu)相關(guān)知識(shí)解析
這篇文章主要介紹了JVM內(nèi)存結(jié)構(gòu)相關(guān)知識(shí)解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11java 避免出現(xiàn)NullPointerException(空指針)的方法總結(jié)
這篇文章主要介紹了java 避免出現(xiàn)NullPointerException(空指針)的方法總結(jié)的相關(guān)資料,需要的朋友可以參考下2017-09-09ActiveMQ基于zookeeper的主從(levelDB Master/Slave)搭建
這篇文章主要介紹了ActiveMQ基于zookeeper的主從levelDB Master/Slave搭建,以及Spring-boot下的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08