1. 什麼是派生類及派生類的用法
派生類就是從一個類衍生出的類
我們把這個派生類叫做子類,另一個類叫做父類
這個子類繼承了父類的屬性和方法
通俗講就像是兒子繼承了父親的財產
子類可以擴展,添加新的方法還有屬性
就像兒子從父親那學到了一些技能
然後自己又學習了一些新的技能
子類的用法跟其他的類沒有太大的區別
2. 1,當從現存類中派生出新類時,可以對派生類做哪些變化
b.i;應該是訪問到B類的i欄位
b.f(3.5); 應該訪問到A類的f方法
3. 創建派生類的語法
Visual Basic 編程指南
如何:創建派生類
Inherits 語句導致類繼承指定類的所有非私有成員。
從另一個類繼承
添加一條 Inherits 語句作為派生類中的第一條語句,該語句具有與要用作基類的類相同的名稱。Inherits 語句必須是類語句後的第一個非注釋語句。
示例
下面的示例定義兩個類。第一個類是具有兩個方法的基類。第二個類從基類中繼承這兩個方法,重寫第二個方法,並定義一個名為 Field 的欄位。
Visual Basic
Class Class1
Sub Method1()
MsgBox("This is a method in the base class.")
End Sub
Overridable Sub Method2()
MsgBox("This is another method in the base class.")
End Sub
End Class
Class Class2
Inherits Class1
Public Field2 As Integer
Overrides Sub Method2()
MsgBox("This is a method in a derived class.")
End Sub
End Class
Protected Sub TestInheritance()
Dim C1 As New Class1
Dim C2 As New Class2
C1.Method1() ' Calls a method in the base class.
C1.Method2() ' Calls another method from the base class.
C2.Method1() ' Calls an inherited method from the base class.
C2.Method2() ' Calls a method from the derived class.
End Sub
當運行過程 TestInheritance 後,看到下面的消息:
This is a method in the base class.
This is another method in the base class.
This is a method in the base class.
This is a method in a derived class.
4. 派生類創建一個對象會不會產生一個基類對象,這個概念對嗎
構造函數中討論this沒有意義,因為對象還沒有構造完成,引用它只是起一個標記的作用,說明這是一個成員變數或成員函數。
5. MFC中創建派生類
直接輸入代碼也行啊
class XXX :public CMyThread
{
}
6. 在公有繼承下 為什麼派生類可以代替基類對象來使用
所有的繼承方式的訪問性:繼承方式基類成員特性派生類成員特性派生類對象訪問公有繼承publicpublic可直接訪問protectedprotected不可直接訪問private不可訪問不可直接訪問私有繼承publicprivate不可直接訪問protectedprivate不可直接訪問private不可訪問不可直接訪問保護繼承publicprotected不可直接訪問protectedprotected不可直接訪問private不可訪問不可直接訪問
7. 派生類對象的創建過程中基類部分是如何進行初始化 詳細�0�3
1 : 由於派生類對象中的基類對象部分是在派生類對象創建時首先被構造的,因此基類對象的數據成員的創建和初始化是先於派生類新增屬性的創建和初始化的。如果基類對象的構造需要傳遞參數對它的數據成員進行初始化,則需要在派生類構造函數定義的初始化表中調用基類的構造函數,並將由派生類構造函數的參數表傳遞來的相應的參數作為實參傳遞給被調用的基類構造函數,用於對基類對象的初始化。例如: class point { int x, y; public: point(int x, int y); // … }; class circle public point { int radius; public: circle(int x, int y, int radius); // … } … circle::circle(int x, int y, int radius):point(x, y) { this->radius = radius; } 2 : 在C++中,類的派生有三種方式: (private)派生、 (protected)派生和公有 (public)派生。這三種派生方式對基類中具有各種訪問許可權的成員的繼承情況如下: ① :在三種派生方式定義的派生類中都不能被直接訪問,當然也不能被派 生類對象的使用者從類外直接訪問。 ② :分為兩種情況: · (private)派生方式定義的派生類中基類的保護成員在派生類中被變為私有成員, 因此這些成員能夠被派生類成員直接訪問,而不能被派生類對象的使用者從類外直接 訪問; · (protected)派生方式和 (public)派生方式定義的派生類中基類的保護成員在 派生類中仍然保持為保護成員,因此這些成員能夠被派生類成員和派生類的派生類成 員直接訪問,而不能被派生類對象的使用者從類外直接訪問。 ③ :分為三種情況: · (private)派生方式定義的派生類中基類的公有成員在派生類中被變為私有成員, 因此這些成員能夠被派生類成員直接訪問,而不能被派生類對象的使用者從類外直接 訪問; · (protected)派生方式定義的派生類中基類的公有成員在派生類中被變為保護成 員,因此這些成員能夠被派生類成員和派生類的派生類成員直接訪問,而不能被派生 類對象的使用者從類外直接訪問; · (public)派生方式定義的派生類中基類的公有成員在派生類中仍然保持為公有成 員,因此這些成員不但能夠被派生類的成員直接訪問,而且也能被派生類對象的使用 者從類外直接訪問。 3 : 以任何派生方式定義派生類都不能直接訪問基類的私有成員。如果要實現派生類能直接訪問基類的私有成員,可以通過以下兩種方法實現: ① 將基類的私有成員聲明保護成員。 ② 將派生類聲明為基類的友元類。 4 : 保護段成員允許類內直接訪問,但不能被類對象的使用者從類外直接訪問;而公有段成員不僅允許類內直接訪問,而且也允許類對象的使用者從類外直接訪問。 保護段成員在派生類的繼承情況分為兩種:在 (private)派生方式定義的派生類中基類的保護成員成為派生類的私有成員;在 (protected)派生方式和 (public)派生方式定義的派生類中基類的保護成員仍然是派生類的保護成員。 5 : 在多繼承派生中,如果派生類的多個直接基類是從一個間接基類中直接派生的(會在多繼承派生類對象中存在一個以上的間接基類對象),並且在多繼承派生類中需要訪問該間接基類的成員,則會產生訪問的歧義性。解決這一問題,就必須引入虛基類,從而多繼承派生類的直接基類從間接基類派生時,可以將該間接基類聲明為虛基類,使得在多繼承派生類對象中只有一個間接基類對象,避免了上述的訪問歧義性。 虛基類中一般應該有一個不需要傳遞參數的構造函數。否則就必須在多繼承派生類構造函數的初始化表中顯式調用作為虛基類的間接基類的構造函數。 6 :⑴ 若同一派生層次中同時包含虛基類和非虛基類,應先調用虛基類構造函數,再調用非虛 基類的構造函數,即「 "; ⑵ 若同一派生層次中包含多個虛基類,這些虛基類的構造函數將按照派生類定義中對它們 聲明的先後次序,從左至右調用。 ⑶ 若虛基類是非虛基類的派生,則仍然先調用該虛基類的基類構造函數,再調用派生虛基 類的構造函數。
8. 派生類能否再生成新的派生類謝謝了,大神幫忙啊
派生類
繼承
基類
有3種public(公有繼承),
protected
(保護繼承)和private(私有繼承)所以可以這樣寫:public
class
B
:
public
A
protected
和
private一樣。還有B
b
=
new
B();
是java中創建派生類的方法。如果是C++的話,應當是這樣的:B
b(參數);
查看原帖>>
求採納