亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

super關鍵字如何在java項目中使用

發布時間:2020-11-11 15:36:39 來源:億速云 閱讀:118 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關 super關鍵字如何在java項目中使用,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

java 關鍵字super詳解

一、super關鍵字  

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

1.1.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();
   }
 }

運行結果:

1.2. 畫內存分析圖了解程序執行的整個過程

  分析任何程序都是從main方法的第一句開始分析的,所以首先分析main方法里面的第一句話:

ChlidClass cc = new ChlidClass();

  程序執行到這里時,首先在棧空間里面會產生一個變量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。

關于 super關鍵字如何在java項目中使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德清县| 疏勒县| 松潘县| 梁平县| 凤山市| 于田县| 嘉峪关市| 宝兴县| 浪卡子县| 瓮安县| 汝阳县| 临沭县| 土默特左旗| 宽城| 阿尔山市| 汉阴县| 常德市| 阜新| 民县| 彭州市| 宜兴市| 丹棱县| 大埔区| 新昌县| 阆中市| 志丹县| 石景山区| 浦江县| 连云港市| 都江堰市| 林芝县| 楚雄市| 重庆市| 彰化市| 阿拉善右旗| 张家港市| 延吉市| 博野县| 额敏县| 滨州市| 家居|