亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

詳解Java編程中super關鍵字的用法

2019-11-26 14:55:23
字體:
來源:轉載
供稿:網友

通過用static來定義方法或成員,為我們編程提供了某種便利,從某種程度上可以說它類似于C語言中的全局函數和全局變量。但是,并不是說有了這種便利,你便可以隨處使用,如果那樣的話,你便需要認真考慮一下自己是否在用面向對象的思想編程,自己的程序是否是面向對象的。 好了,現在開始討論this&super這兩個關鍵字的意義和用法。在Java中,this通常指當前對象,super則指父類的。當你想要引用當前對象的某種東西,比如當前對象的某個方法,或當前對象的某個成員,你便可以利用this來實現這個目的,當然,this的另一個用途是調用當前對象的另一個構造函數,這些馬上就要討論。如果你想引用父類的某種東西,則非super莫屬由于this與super有如此相似的一些特性和與生俱來的某種關系,所以我們在這一塊兒來討論,
希望能幫助你區分和掌握它們兩個。在一般方法中最普遍的情況就是,在你的方法中的某個形參名與當前對象的某個成員有相同的名字,這時為了不至于混淆,你便需要明確使用this關鍵字來指明你要使用某個成員,
使用方法是“this.成員名”,而不帶this的那個便是形參。另外,還可以用“this.方法名”來引用當前對象的某個方法,但這時this就不是必須的了,你可以直接用方法名來訪問那個方法。

 在JAVA類中使用super來引用父類的成分,用this來引用當前對象,如果一個類從另外一個類繼承,我們new這個子類的實例對象的時候,這個子類對象里面會有一個父類對象。怎么去引用里面的父類對象呢?使用super來引用,this指的是當前對象的引用,super是當前對象里面的父對象的引用。
 
super關鍵字測試

package cn.galc.test;/** * 父類 * @author gacl * */class FatherClass {  public int value;  public void f() {    value=100;    System.out.println("父類的value屬性值="+value);  }}/** * 子類ChildClass從父類FatherClass繼承 * @author gacl * */class ChildClass extends FatherClass {  /**   * 子類除了繼承父類所具有的valu屬性外,自己又另外聲明了一個value屬性,   * 也就是說,此時的子類擁有兩個value屬性。   */  public int value;  /**   * 在子類ChildClass里面重寫了從父類繼承下來的f()方法里面的實現,即重寫了f()方法的方法體。   */  public void f() {    super.f();//使用super作為父類對象的引用對象來調用父類對象里面的f()方法    value=200;//這個value是子類自己定義的那個valu,不是從父類繼承下來的那個value    System.out.println("子類的value屬性值="+value);    System.out.println(value);//打印出來的是子類自定義的那個value的值,這個值是200    /**     * 打印出來的是父類里面的value值,由于子類在重寫從父類繼承下來的f()方法時,     * 第一句話“super.f();”是讓父類對象的引用對象調用父類對象的f()方法,     * 即相當于是這個父類對象自己調用f()方法去改變自己的value屬性的值,由0變了100。     * 所以這里打印出來的value值是100。     */    System.out.println(super.value);  }}/** * 測試類 * @author gacl * */public class TestInherit {  public static void main(String[] args) {    ChildClass cc = new ChildClass();    cc.f();  }}

運行結果:

畫內存分析圖了解程序執行的整個過程
 
  分析任何程序都是從main方法的第一句開始分析的,所以首先分析main方法里面的第一句話:

 ChlidClass cc = new ChlidClass(); 


  程序執行到這里時,首先在??臻g里面會產生一個變量cc,cc里面的值是什么這不好說,總而言之,通過這個值我們可以找到new出來的ChlidClass對象。由于子類ChlidClass是從父類FatherClass繼承下來的,所以當我們new一個子類對象的時候,這個子類對象里面會包含有一個父類對象,而這個父類對象擁有他自身的屬性value。這個value成員變量在FatherClass類里面聲明的時候并沒有對他進行初始化,所以系統默認給它初始化為0,成員變量(在類里面聲明)在聲明時可以不給它初始化,編譯器會自動給這個成員變量初始化,但局部變量(在方法里面聲明)在聲明時一定要給它初始化,因為編譯器不會自動給局部變量初始化,任何變量在使用之前必須對它進行初始化。
 
  子類在繼承父類value屬性的同時,自己也單獨定義了一個value屬性,所以當我們new出一個子類對象的時候,這個對象會有兩個value屬性,一個是從父類繼承下來的value,另一個是自己的value。在子類里定義的成員變量value在聲明時也沒有給它初始化,所以編譯器默認給它初始化為0。因此,執行完第一句話以后,系統內存的布局如下圖所示:

接下來執行第二句話: 

1 cc.f(); 


  當new一個對象出來的時候,這個對象會產生一個this的引用,這個this引用指向對象自身。如果new出來的對象是一個子類對象的話,那么這個子類對象里面還會有一個super引用,這個super指向當前對象里面的父對象。所以相當于程序里面有一個this,this指向對象自己,還有一個super,super指向當前對象里面的父對象。
 
  這里調用重寫之后的f()方法,方法體內的第一句話:“super.f();”是讓這個子類對象里面的父對象自己調用自己的f()方法去改變自己value屬性的值,父對象通過指向他的引用super來調用自己的f()方法,所以執行完這一句以后,父對象里面的value的值變成了100。接著執行“value=200;”這里的vaule是子類對象自己聲明的value,不是從父類繼承下來的那個value。所以這句話執行完畢后,子類對象自己本身的value值變成了200。此時的內存布局如下圖所示:

方法體內的最后三句話都是執行打印value值的命令,前兩句打印出來的是子類對象自己的那個value值,因此打印出來的結果為200,最后一句話打印的是這個子類對象里面的父類對象自己的value值,打印出來的結果為100。
 
  到此,整個內存分析就結束了,最終內存顯示的結果如上面所示。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91黑丝高跟在线| 国产日本欧美一区二区三区在线| 国产精品高清在线| 亚洲第一免费播放区| 亚洲国产精久久久久久| 欧美性色xo影院| 在线观看日韩视频| 日韩av在线一区二区| 久操成人在线视频| 韩国精品美女www爽爽爽视频| 亚洲日韩中文字幕| 日韩在线观看av| 欧美日韩中文字幕日韩欧美| 欧美黄色片免费观看| 亚洲欧美国产精品va在线观看| 秋霞av国产精品一区| 日韩av123| 色悠久久久久综合先锋影音下载| 亚洲激情成人网| 亚洲第一级黄色片| 热久久99这里有精品| 日韩av手机在线观看| 日韩亚洲欧美中文高清在线| 疯狂做受xxxx欧美肥白少妇| 91极品视频在线| 中文字幕成人在线| 亚洲成人国产精品| 国产ts人妖一区二区三区| 一区二区成人av| 久久好看免费视频| 在线观看国产精品日韩av| 中日韩美女免费视频网站在线观看| 久久91精品国产91久久跳| 国产69精品99久久久久久宅男| 久久大大胆人体| 色yeye香蕉凹凸一区二区av| 国产做受69高潮| 日本精品久久久| 国产视频在线观看一区二区| 日韩欧美精品免费在线| 国产精品视频自拍| 亚洲天堂第一页| 亚洲大胆人体av| 中文字幕日韩欧美| 精品久久久久国产| 国产精品久久99久久| 久久夜精品va视频免费观看| 欧美一级片一区| 91久久精品美女高潮| 日本sm极度另类视频| 亚洲黄色av女优在线观看| 亚洲伊人久久大香线蕉av| 亚洲国产小视频| 最新国产成人av网站网址麻豆| 亚洲 日韩 国产第一| 97婷婷涩涩精品一区| 欧美性猛交视频| 91嫩草在线视频| 北条麻妃一区二区在线观看| 亚洲美女视频网站| 色综合久久精品亚洲国产| 狠狠色狠狠色综合日日小说| 国产九九精品视频| 国产精品一区二区三区在线播放| 久久久久女教师免费一区| 国产精品视频播放| 久久频这里精品99香蕉| 欧美大片在线影院| 这里只有精品视频| 亚洲欧美国产视频| 国产亚洲精品成人av久久ww| 欧美另类极品videosbest最新版本| 国产精品美女午夜av| 色哟哟亚洲精品一区二区| 欧美精品免费播放| 91色在线观看| 久久久极品av| 久久精品99久久久久久久久| 欧美大人香蕉在线| 热久久免费国产视频| 日韩高清电影免费观看完整版| 亚洲天堂av在线播放| 日韩欧美一区二区三区久久| 欧美午夜片在线免费观看| 国产在线日韩在线| 中文字幕精品久久久久| 亚洲精品在线观看www| 97在线看福利| 国产精品爽爽ⅴa在线观看| 久久福利视频导航| 亚洲精品在线视频| 日韩中文字幕亚洲| 国产精品678| 揄拍成人国产精品视频| 欧美超级乱淫片喷水| 欧美一级淫片播放口| 亚洲亚裔videos黑人hd| 欧美激情视频三区| 亚洲国产精品va在看黑人| 国产精品流白浆视频| 日韩精品免费在线视频观看| 亚洲国产精品视频在线观看| 亚洲第一页在线| 亚洲欧美激情视频| 国产精品高清免费在线观看| 亚洲奶大毛多的老太婆| 亚洲成人av资源网| 色综合久久久888| 欧美在线视频一区二区| 欧美性猛交xxxxx免费看| 国内精品一区二区三区四区| 九色成人免费视频| 国产国语videosex另类| 久久久久久久影视| 欧美成人合集magnet| 色小说视频一区| 亚洲女同精品视频| 国产精品wwww| 亚洲精品中文字幕女同| 国产狼人综合免费视频| 日韩欧美中文免费| 91久久在线观看| 992tv成人免费视频| 精品一区二区亚洲| 欧美成人午夜剧场免费观看| 国产91网红主播在线观看| 91精品啪aⅴ在线观看国产| 丝袜亚洲欧美日韩综合| 91高清视频在线免费观看| 欧美体内谢she精2性欧美| 日韩精品在线视频美女| 日韩美女av在线| 欧美色道久久88综合亚洲精品| 精品国产91久久久| 中文精品99久久国产香蕉| 日韩在线观看精品| 久久久久久欧美| 中文字幕精品在线| 国产午夜精品久久久| 国产精品视频地址| 在线观看日韩欧美| 亚洲区中文字幕| 狠狠做深爱婷婷久久综合一区| 亚洲人线精品午夜| 午夜精品三级视频福利| 在线亚洲午夜片av大片| 日韩有码在线播放| 亚洲精品网址在线观看| 欧洲精品在线视频| 欧美最猛性xxxx| 亚洲国产天堂网精品网站| 亚洲www永久成人夜色| 日韩欧美成人免费视频| 在线精品国产成人综合| 亚洲欧美综合另类中字| 国产精品久久久久国产a级| 97在线视频一区| 色99之美女主播在线视频| 富二代精品短视频| 欧美在线激情视频| 久久精品色欧美aⅴ一区二区| 久久夜色精品亚洲噜噜国产mv| 午夜精品久久久久久久久久久久| 亚洲成人网在线观看|