你父類的的屬性用的private(私有),這個是沒辦法直接繼承使用的,有三種方法修改
10年積累的成都網(wǎng)站建設(shè)、成都做網(wǎng)站經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有庫車免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
一:你可以把修飾改為public(公有),這樣在子類中就可以直接修改,如下:
Digimon:
public class Digimon {
public String mon;
public String name;
}
Patamon:
public class Patamon extends Digimon{
public Patamon(){
mon="Angemon";
}
}
二:給父類添加get,set方法,如下:
Digimon:
public class Digimon {
private String mon;
private String name;
public String getMon() {
return mon;
}
public void setMon( String mon ) {
this.mon = mon;
}
public String getName() {
return name;
}
public void setName( String name ) {
this.name = name;
}
Patamon:
public class Patamon extends Digimon{
public Patamon(){
setMon( "Angemon" );
}
}
}
三:給父類添加參數(shù)構(gòu)造器(也需要添加get,set不然賦值了你也獲取不到),如下:
Digimon:
public class Digimon {
private String mon;
private String name;
public Digimon() {
super();
}
public Digimon( String mon, String name ) {
super();
this.mon = mon;
this.name = name;
}
public String getMon() {
return mon;
}
public void setMon( String mon ) {
this.mon = mon;
}
public String getName() {
return name;
}
public void setName( String name ) {
this.name = name;
}
}
Patamon:
public class Patamon extends Digimon{
public Patamon(){
//調(diào)用父類構(gòu)造器
super( "Angemon", "豆豆" );
}
}
這里考慮覆蓋關(guān)系還要考慮類的初始化順序
這里其實是涉及類的初始化。
因為有繼承關(guān)系,所以它在調(diào)用子類Atest()構(gòu)造器前,先調(diào)用了父類的構(gòu)造器,有個隱藏的 super();調(diào)用,但因為test()被覆蓋,它會調(diào)用子類的test(),這時子類的成員變量只是定義,還未進(jìn)行初始化賦值,而int型的默認(rèn)初始值為0,如果你把i變成String型,你會發(fā)現(xiàn)第一次輸出為null
子類已經(jīng)覆蓋了父類,并且重寫了父類的方法, 一般來說, 就沒有必要用子類調(diào)用父類中被覆蓋的方法了.(否則就不要覆蓋了啊)
要實現(xiàn)也是可以的 ,我們 需要為子類提供一個其他的方法,用于去調(diào)用父類中被覆蓋的方法
參考代碼
class?A?{//父類
public?void?print()?{
System.out.println("父類的print方法");
}
}
class?B?extends?A?{//子類
@Override
public?void?print()?{
System.out.println("子類的print方法");
}
//?在子類里創(chuàng)造一個方法去調(diào)用父類的方法
public?void?fuLeiPrint()?{
super.print();?//super指向父類
}
}
public?class?Test?{
public?static?void?main(String[]?args)?{
B?b?=?new?B();
b.print();
b.fuLeiPrint();
// A?a?=(A)b;?//?這樣強(qiáng)轉(zhuǎn)還是打印的子類的方法,因為內(nèi)存中還是子類
// a.print();
}
}
一,"如何在子類重寫(覆蓋)父類的方法"
這個術(shù)語叫“重載”。很簡單,首先把父類方法原封復(fù)制到子類里,然后修改函數(shù)體就可以。注意函數(shù)簽名不能變。
二,如何在子類方法中調(diào)用父類方法的變量值來用
這是做不到的,不可能在一個函數(shù)中調(diào)用另一個函數(shù)的局部變量。父類的屬性是有可能用的,因為子類會繼承父類的public和protected屬性。
標(biāo)題名稱:JAVA覆蓋父類方法代碼 覆蓋父類的方法
標(biāo)題URL:http://muchs.cn/article4/hgisie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、標(biāo)簽優(yōu)化、網(wǎng)站建設(shè)、動態(tài)網(wǎng)站、微信小程序、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)