1樓:水木澤遠
首先說說為什麼會有 子類重寫 父類的構造方法: 我們知道,子類初始化之前都會首先初始化父類,靜態變數不必說了。因為例項變數是在建構函式裡面初始化的或者說是通過呼叫建構函式來初始化的。
所以我們要在子類中通過super關鍵字呼叫父類建構函式。
編譯器預設的話 在子類的構造器的第一行自動編譯上super()來呼叫父類預設的建構函式,只是我們這裡省略了,其實這是編譯器實現的,**中不用 顯式 寫出來罷了。
但是,如果你在編寫父類是自己寫了帶參建構函式但並沒有顯示的寫一個無參建構函式的話,子類中你就必須 顯式的 用super關鍵字在子類的建構函式第一行中寫上super(父類引數對應)。當父類中有多個帶參的建構函式時,你可以呼叫任意一個都是可以的,這要根據情況而定!!
最後再說一句:建構函式是用來 初始化 例項變數的!!!子類在初始化之前先初始化父類的例項變數,注意:是例項變數。
2樓:般若兮若
每一個類都預設有一個無參的構造方法.並且會預設有一句super()去呼叫父類的無參構造方法
3樓:匿名使用者
構造器本來就可以不用寫。
比如你的父類有private a,private b那麼建構函式預設為(a = null;b = null);
子類如果繼承了父類,而且有自己的private c則也是使用預設的(a = null;b = null;c = null);
但是如果父類的構造不是預設的,比如(a = "aaaa";b = 1);
那麼子類在沒有建構函式的情況下則是使用(a = "aaaa";b = 1;c = null)構造器
4樓:
這個不一定的
1.如果父類有預設構造器(構造器沒有引數),則子類隨意
2.如果父類沒有預設構造器,但是有其他的構造器(有引數),則子類必須要寫構造器
java中子類變數為什麼不引用父類例項,將詳細點更好
1.舉一個例子,學生類繼承人類 studen extends person 首先你要明白一個類例項化的時候是怎麼分配記憶體的 student s new student s是在棧記憶體中分配空間的,存的是一個地址,這個地址指向在堆記憶體中分配空間的new student 而student繼承pers...
在java中為什麼要使用類圖,在java中為什麼要使用類圖
其實也不是一定要使用類圖的,使用類圖就是為了讓你清楚的理解類之間的關係,比如a類繼承了b類,同時又實現了c介面,等等這樣的關係用類圖來表示的話一目瞭然。使用類圖還有一個好處,就是在軟體工程中講的一個軟體開發的 詳細設計 階段,用類圖表示出系統的結構後好多工具支援自動生成 就是從類圖直接生成 的基本結...
在Java介面A的實現類B中如何呼叫A中的變數
1.num有歧義 不表示哪一個num 2.會3.介面b的實現類c吧 因為介面中的變數都是public static 的,用b.num試試 玥玥弔 1 介面中你寫實現在繼承類?繼承下來當然報錯 the field num is ambiguous 2 介面中的變數 1 會得到但是前提是隻繼承b不能中間...