java的super,java的super和this為什麼在main中報錯

本文目錄一覽:

java中的super()是什麼

要說super就先要說this。

“this”,作為一個特殊的關鍵字,它的規則如下:

1。可以表示構造函數傳遞。this(a,b)表示調用另外一個構造函數。這裡面的this就是一個特殊語法,不是變數,沒有什麼類型。

2。可以在一個類的非static成員內部使用,表示當前這個對象。此時,this就是一個final的普通變數,它有靜態類型,就是這個類C本身;它有動態類型,就是當前這個對象的類型。你可以對它調用成員函數,把它傳遞給別的函數,等等等等。只要一個C類型的final變數可以出現的地方,它就可以出現。

“super”。它和”this”類似,但是也有不同的地方。

1。表示調用父類的構造函數。也是一個特殊語法,不是變數,沒有什麼類型。

2。可以在一個類的非static成員內部使用。比如super.method()。

但是,注意,這個super.method()只是長得跟some_var.method()一樣,一個語法糖而已。實質上,”super”根本不是一個變數。

為什麼不是?因為如果是就壞了。java裡面有一個金科玉律:任何public非static函數的調用都是多態的。

所以,如果super是個變數,也指向當前對象,那麼,不管super的靜態類型是什麼super.method()必然調用的是子類的那個版本,而不會是我們期望的,靜態地選擇父類的那個版本。

所以,你只要把super.xxx看成一個特殊的語法,比如理解為「super::xxx」就好了。

既然super不是一個變數,那麼不能把它象一個普通變數那樣”==”,或者傳遞給某個函數就看起來很正常了,是么?何況,你其實也用不著它,有this你這些要求就都可以辦到了。

3。super的另外一個作用是調用父類的protected函數。只有通過”super”這個魔咒,我們才能操作父類的protected成員,別無它法。

java中Super是什麼意思?

Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行複雜的編程。

super是引用當前對象的直接父類中的成員(用來訪問直接父類中被隱藏的父類中成員數據或函數,基類與派生類中有相同成員定義時如:super.變數名 super.成員函數據名。

JAVA中的super代表什麼意思??

super();表示調用父類的構造方法,只是調用方法,不構造對象。 super.fun();表示調用父類的某方法 在繼承的時候這個方法是肯定被繼承下來的。如果fun()這個方法在子類沒有重寫,那麼super.fun();實際上跟直接調用fun();是一樣的。 如果被重寫了,那麼super.fun();就是重寫前的,fun();就是重寫後的。

java中「super」的用法及意義是?

java中的super指的就是父類(super class)\x0d\x0a例:B繼承A\x0d\x0aA類\x0d\x0aclass A {\x0d\x0a private String astr;\x0d\x0a private String bstr;\x0d\x0a public A(string astr, string bstr) {\x0d\x0a this.astr = astr; //this指的是本類,在這裡就是A\x0d\x0a this.bstr = bstr;\x0d\x0a }\x0d\x0a \x0d\x0apublic String getAstr() {\x0d\x0a return this.astr;\x0d\x0a}\x0d\x0a\x0d\x0apublic String getBstr() {\x0d\x0a return this.bstr;\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0aB類\x0d\x0aclass B extends A {\x0d\x0a private String aa;\x0d\x0a private String bb;\x0d\x0a \x0d\x0a public B(String aa, String bb) {\x0d\x0a super(aa, bb); //這裡就調用了父類的構造方法,給父類的super.astr,super.bstr(super.astr也就是父類的astr變數,super.bstr同理)兩個變數賦值了,而不是給this.aa,this.bb(this.aa可以理解為本類的aa變數,this.bb同理)賦值\x0d\x0a // this.aa = aa; \x0d\x0a // this.bb = bb;\x0d\x0a } \x0d\x0a \x0d\x0apuplic String getAA() {\x0d\x0a return this.aa;\x0d\x0a}\x0d\x0a\x0d\x0apublic String getBB() {\x0d\x0a return this.bb;\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0a測試類\x0d\x0apublic class Test {\x0d\x0a public static void main(String[] args) {\x0d\x0a B b = new B(“aabb”, “ccdd”); // 調用B的構造方法,給super.astr,super.bstr賦值了\x0d\x0a System.out.println(b.getAa()); // null 沒有被賦值\x0d\x0a System.out.println(b.getBb()); // null\x0d\x0a System.out.println(b.getAstr()); // aabb 調用父類的方法,返回super.astr的值\x0d\x0a System.out.println(b.getAstr()); // ccdd 調用父類的方法,返回super.bstr的值\x0d\x0a }\x0d\x0a}

原創文章,作者:PIBF,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/143041.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
PIBF的頭像PIBF
上一篇 2024-10-14 18:44
下一篇 2024-10-14 18:44

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論