若父類重寫了自身的構造器,並且還實現了自己的方法,那麼,當子類繼承父類後,重寫自身的構造器和重寫父類的其他方法時,搭配super()
或者super.method()
時候,會出現什麼現象呢?
public
class
checket
extends
base
public
static
void
main(string args)
}class base
}
第一眼看過去:
疑問來了:
解答:u say a jb without picture 無圖言屌,下面上圖:
可以看到,idea
上面提示了:在構造器方法體內,必須在第一條語句呼叫super()
也就是說,子類重寫構造器,要麼不呼叫super()
,要麼就第一句就呼叫super()
,寫在第一行!
列印結果:
寫不寫super()
,列印結果都一樣:
base
checket
繼續,如果你子類checket
只有乙個無參構造器(或者不寫,預設),列印結果如下:
只列印父類構造器內容,子類構造不寫,就沒有東西,不列印唄
base
我們知道,在使用eclipse
或者idea
等ide
時候,子類重寫父類方法是,第一條語句都會自動生成super.methodname()
package com.ggsddu.test;
/** *@author zhouk
*@date 2018/05/18
*/public
class
checket
extends
base
@override
public
void
sayhi()
public
static
void
main(string args)
}class base
public
void
sayhi()
}
如上面**所示:
super.methodname()
放在重寫方法方法體的哪個位置都是可以的,和一般語句沒差。
所以,你寫,那就列印父類方法的,不寫,那就不列印。
本次實際**,重寫sayhi
方法**如下:
@override
public
void
sayhi()
結合上面子類重寫自身構造器,列印結果為:
base
checket
say hi from checket
say hi from base
此處,也有圖。
Java 父類建構函式中呼叫子類重寫的方法
public class c1 public string s aaaa 父類建構函式 public c1 public void call class c2 extends c1 重寫父類中的call函式 public void call 輸出 null bbbb aaaa分析 1.初始化c2 時...
Swift子類構造方法呼叫父類構造方法
swift 中子類init呼叫父類的init方法必須寫在最後。如下例項 子類chemistry中init構造方法呼叫父類的init方法完成屬性初始化,呼叫的父類init方法super.init physics physics 必須寫在方法最後一句,否則報錯 class subjects func u...
父類構造方法對子類構造方法影響
1 乙個類中如果沒有定義構造方法,預設有乙個無參構造方法,其結構如下 public 類名 其中super 關鍵字可以省略不寫,缺省會呼叫父類無參構造方法。需要注意的是,如果乙個類中定義了乙個有參構造方法,則無參構造方法不再贈送,需要自行編寫。2 this 引數列表 呼叫本類構造方法,但必須放在有效 ...