⑴ 如何從子類顯式得調用父類的構造方法
當父類中有多個構造函數,且沒有定義默認構造函數的話,當繼承或者創建對象的時候,系統將對變數進行初始化,但系統將不能在父類中找到默認構造函數,所以這個時候要指定一個已定義的構造函數。
「類可以沒有構造方法,但如果有多個構造方法,就應該要有默認的構造方法,
否則在繼承此類時,需要在子類中顯式調用父類的某一個非默認的構造方法了。」
class Parent{
Parent(int a,int b);
};
class Son:public class Parent{
Son();
Son(int a,int b);
};
int a,b;
Son(a,b);
⑵ 子類可以直接調用父類的函數嗎
子類可以直接調用父類申明為public的方法。
1、若子類重寫了父類中的某個函數。
在java中用super.functionName()調用父類方法,用this.functionName()調用子類方法。
在c++中可以用 基類::函數 調用
2、父類未被重寫的public 方法可直接調用。
⑶ C++如何調用父類的方法
C++通過子類調用父類函數fun();
子類和父類函數名一樣的函數fun,如果參數不一樣,不管加不加virtual,當子類調用fun()時,會先在子類中找,找不到會報錯。
C++是C語言的繼承,它既可以進行C語言的過程化程序設計,又可以進行以抽象數據類型為特點的基於對象的程序設計,還可以進行以繼承和多態為特點的面向對象的程序設計。C++擅長面向對象程序設計的同時,還可以進行基於過程的程序設計,因而C++就適應的問題規模而論,大小由之。
C++不僅擁有計算機高效運行的實用性特徵,同時還致力於提高大規模程序的編程質量與程序設計語言的問題描述能力。
(3)子類怎麼調用父類的方法擴展閱讀:
C++語言特點:
1、支持繼承和重用
在C++現有類的基礎上可以聲明新類型,這就是繼承和重用的思想。通過繼承和重用可以更有效地組織程序結構,明確類間關系,並且充分利用已有的類來完成更復雜、深入的開發。新定義的類為子類,成為派生類。它可以從父類那裡繼承所有非私有的屬性和方法,作為自己的成員。
2、支持多態性
採用多態性為每個類指定表現行為。多態性形成由父類和它們的子類組成的一個樹型結構。在這個樹中的每個子類可以接收一個或多個具有相同名字的消息。當一個消息被這個樹中一個類的一個對象接收時,這個對象動態地決定給予子類對象的消息的某種用法。多態性的這一特性允許使用高級抽象。
繼承性和多態性的組合,可以輕易地生成一系列雖然類似但獨一無二的對象。由於繼承性,這些對象共享許多相似的特徵。由於多態性,一個對象可有獨特的表現方式,而另一個對象有另一種表現方式。
參考資料來源:網路-C++
⑷ 子類怎樣調用父類方法
publicclassSuperTest{
publicstaticvoidmain(String[]args){
Parentc=newParent();
c.addAll();
}
}
classParent{
publicvoidadd(){
System.out.println("Aadd...");
}
publicvoidaddAll(){
System.out.println("AaddALL...");
add();
//在父子類之間,如果在父類中使用this關鍵字,那麼運行子類時如果走到this行,指的是子類而不是父類。
//誰調用,this就是指誰
System.out.println(this.getClass());
}
}
classChildextendsParent{
@Override
publicvoidadd(){
//TODOAuto-generatedmethodstub
System.out.println("Badd...");
super.add();
}
@Override
publicvoidaddAll(){
//TODOAuto-generatedmethodstub
System.out.println("BaddALL...");
super.addAll();
}
}
最後輸出的結果是
BaddALL...
AaddALL...
Badd...
Aadd...
按我的理解,super.addAll()方法調用來Parent中的addAll(),而Parent中的addAll()調用了add()。這里的add最後調用的是Child的add(),既然是super.addAll(),為何最後竟然調用的是子類的add()方法。。。
這里涉及到的問題是當子類調用super走到父類的方法中,這時的對象this到底是指Child子類還是父類Parent?
正確答案是子類,this.add();其中的this是指當前對象,也就是Childc=newChild();中的c.
因此雖然是在父類中執行的add方法,但實際上執行的是子類的add方法
在父類的add 方法中
System.out.println(this.getClass());
結果是Child而不是Parent!
⑸ 如何在java中子類中父類的對象如何調用父類的方法
對於有繼承關系的類,子類可以通過這個關鍵字調用父類中的方法。
比如:super.query();
此句話的意思是調用父類中的非私有方法query。
一般的用super關鍵字,調用類中的父類中重載構造方法。
比如:父類有個構造方法public
A(){},同時又寫了一個重載的構造方法public
A(String
name);那麼,在子類中可以使用super(name)指明調用父類的哪個構造方法進行實例化父類對象。
大概就是這樣的!
⑹ JAVA子類繼承了父類,那麼子類怎麼調用父類的方法
1
用super關鍵字
2
在創建子類對象後用子類變數名直接調用
如:
childClass
cls=new
childClass()
cls.父類方法名
(在eclipse開發工具中會給出方法選項)
⑺ 如何從子類中調用一個被重寫的父類的方法
比如class
child類繼承自class
parent,重載了parent的test方法,
那麼child類想調用父類的test方法時,可以寫成parent::test();
請採納,謝謝
⑻ 如何調用父類的構造方法
調用父類的構造方法:
當你new一個子類對象的時候,必須首先要new一個父類的對象出來,這個父類對象位於子類對象的內部,所以說,子類對象比父類對象大,子類對象裡麵包含了一個父類的對象,這是內存中真實的情況.構造方法是new一個對象的時候,必須要調的方法,這是規定,要new父類對象出來,那麼肯定要調用其構造方法,所以:
第一個規則
子類的構造過程中,必須調用其父類的構造方法。一個類,如果我們不寫構造方法,那麼編譯器會幫我們加上一個默認的構造方法,所謂默認的構造方法,就是沒有參數的構造方法,但是如果你自己寫了構造方法,那麼編譯器就不會給你添加了,所以有時候當你new一個子類對象的時候,肯定調用了子類的構造方法,但是在子類構造方法中我們並沒有顯示的調用基類的構造方法,就是沒寫,如:super(); 並沒有這樣寫,但是這樣就會調用父類沒有參數的構造方法,如果父類中沒有沒有參數的構造方法就會出錯。
第二個規則
如果子類的構造方法中沒有顯示的調用基類構造方法,則系統默認調用基類無參數的構造方法注意:如果子類的構造方法中既沒有顯示的調用基類構造方法,而基類中又沒有默認無參的構造方法,則編譯出錯,所以,通常我們需要顯示的:super(參數列表),來調用父類有參數的構造函數。
了解更多java編程知識,推薦來北京尚學堂,雄厚的師資力量與科學的授課方式,會帶給你最完美的學習體驗。
⑼ java子類繼續父類怎麼調用父類裡面的方法
通過super調用父類的方法
舉例:
public class Father{//定義父類
public void s(){//定義父類的方法s
}
}
public class Son extends Father{//定義子類son,繼承父類father
public void s(){//定義子類的s方法,覆蓋了父類的s方法
super.s();//通過super調用父類的s方法
}
}
補充:
Java中,在繼承關系中,super指向當前對象裡面的父對象。