子類重寫父類構造器以及其他方法

2021-08-20 02:49:59 字數 1829 閱讀 9998

若父類重寫了自身的構造器,並且還實現了自己的方法,那麼,當子類繼承父類後,重寫自身的構造器和重寫父類的其他方法時,搭配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或者ideaide時候,子類重寫父類方法是,第一條語句都會自動生成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 引數列表 呼叫本類構造方法,但必須放在有效 ...