C派生類繼承基類的所有成員,包括基類的私有成員

時間 2022-06-10 06:05:06

1樓:匿名使用者

樓主你好。答案就是:繼承了,但是無法訪問。

為什麼呢?我們用乙個例子來證明。比如我們有個基類

public class a

}它有乙個私有成員name,和乙個保護的方法getname()

然後我們寫個空類來繼承他

public class b : a

好了,如果我們例項化這個類,並呼叫getname方法,並輸出它

b b = new b();

string name = b.getname();

console.writeline(name);

你說會顯示什麼呢?

當然會顯示"aaa"

為什麼?我new的只是b而已,b是乙個空類,裡面啥都沒有,**來的"aaa"?

就是從a裡繼承來的。

其實b擁有所有a有的東西,只不過a設為私有的成員和方法,b是無法訪問的。

除非a提供了類似getname這種方法,b才可以有機會呼叫到私有成員。

這就是類的封裝。

封裝好的類,可以讓繼承的類在使用基類的方法的時候,不必關心裡面的運算過程和涉及到的變數,也起到了一定的知識保護的效果。

2樓:叫什麼呢嫩

只繼承public和protect,退一步說,私有的即使被繼承了也沒有意義,我的理解是:

私有成員其實已經被繼承了,但是它們卻不可以被訪問,因為私有成員只能被宣告它們的類或結構體中才可訪問,所以看上去像是沒有被繼承。

3樓:

可以這樣理解,繼承了不能用。你也可以理解為私有的不能繼承。

算是乙個爭議問題。

c#。派生類中繼承基類的成員與基類的成員具有相同的儲存空間???,c++中呢

4樓:匿名使用者

父類的引用在棧中建立,用指標指向了子類在堆中開闢的記憶體空間,當用構造方法賦值的時候,父類接收賦值同時把該值儲存到了子類開闢的記憶體空間中,這裡同時子類單有的字段也就賦值並儲存在記憶體空間中,當用父類引用進行「.」操作的時候只能顯示出來父類的字段值(也就是儲存在記憶體中子類物件的值),這樣理解對嗎?如果對,當我把返回的父類引用加入到集合中,為什麼把子類的字段屬性也加進去了?

c++ 派生類繼承基類的所有成員,這句話對嗎

5樓:匿名使用者

不是不可

繼承,是派生類不可用呼叫基類的私有成員,呼叫和繼承不是乙個版意思。繼承權父類其實父類裡所有的函式變數都是在工作的,只是不可讓子類去隨便改動和訪問

(logical,logical, )引數說明:logical,logical,logical……

c# 派生類例項能呼叫基類私有成員或者半公開成員嗎

6樓:匿名使用者

私有的不能被繼承。

其實你自己在編譯器裡嘗試一下就知道了的。

比如:class a

class b:a

然後你在主函式裡建立b物件s1

再敲入s1.num

會發現報錯,就說明a類的私有成員num沒被繼承

C類的公有繼承,基類的私有成員在派生類中不可見或不可訪問,這個不可見或不可訪問是什麼意思

可口可越 外部成員無法訪問內部私有成員。 寒鐵礦 從物理上講是複製過來了,在記憶體中確實有複製。但是從程式上看是被遮蔽了,不能直接呼叫。 淺綠淡淡 簡單的表達一下,父母跟子女。基類就是父母,子女就是派生類。基類的私有成員就好比是父母的私房錢,子女能夠繼承父母的樣貌 即公有成員 但是子女沒法使用父母的...

C派生類指標指向基類物件,C 中基類指標指向派生類物件可以呼叫派生類的新增成員麼

需要知道一些常識,乙個類所有的函式都是再code 區中唯一的存放乙份。而資料成員則是每個物件儲存乙份,並按照宣告順序依次存放。類a中有了虛函式就會再類的資料成員的最前面新增乙個vfptr指標 void vfptr 這個指標用來指向乙個vtable表 乙個函式指標陣列 乙個類只有乙個該錶 該錶儲存著當...

關於c基類派生類的引用和指標,關於C 基類 派生類的引用和指標

1 首先回答第一個問題 用基類的指標指向派生類的物件,這樣做可以體現c 的重要特性 多型性。多型性其實也就是動態聯編。這樣做的好處是 當基類裡面定義了一個虛成員函式的時候,其派生類裡面定義了同名的函式可以實現覆蓋。你的基類指標指向那個物件,就呼叫那個物件的該方法。我舉個例子你應該就明白了 class...