3
A
回答
2
是的,你可以,如果它被宣佈爲public
或protected
。但不是private
。
感謝@DavidL ..我忘了提及internal
的特殊情況。
從附帶的Visual Studio(2012年版在這裏)C#手冊::
- •繼承是傳遞的。如果C來自B,並且B從A派生出 ,則C繼承B中聲明的成員以及A中聲明的成員。•派生類擴展其直接基類 類。派生類可以向其繼承的成員添加新成員,但它不能刪除繼承成員的定義。 •實例 構造函數,析構函數和靜態構造函數不是繼承的, ,但所有其他成員都是,無論它們聲明的可訪問性爲 (§3.5)。但是,根據其聲明的可訪問性,繼承的成員可能無法在派生類中訪問。 •派生類 可以通過聲明具有 相同名稱或簽名的新成員來隱藏(§3.7.1.2)繼承成員。但請注意,隱藏繼承的成員不會刪除該成員 - 它只會使該成員 直接通過派生類無法訪問。 • 類的實例包含一組在類中聲明的所有實例字段,並且其基類中存在一個從 派生類類型到其任何基類類型的隱式轉換(第6.1.6節)。因此,對某個派生類的實例的引用 可被視爲對其任何基類的實例的引用。 •一個類可以聲明虛方法,屬性和索引器,並且派生類可以覆蓋這些函數成員的實現。 這使類 呈現多態行爲,其中由功能成員調用執行的動作取決於調用該功能成員的實例的運行時類型而變化。
而且這是一個新的隱藏特徵,如果我的權利,在C#5.0:
嵌套類型可能隱藏(§3.7.1)的基體部件。新的修飾符在嵌套類型聲明中是允許的,這樣可以明確表示隱藏。示例
using System;
class Base
{
public static void M() {
Console.WriteLine("Base.M");
}
}
class Derived: Base
{
new public class M
{
public static void F() {
Console.WriteLine("Derived.M.F");
}
}
}
class Test
{
static void Main() {
Derived.M.F();
}
}
顯示一個嵌套的類M,它隱藏了在Base中定義的方法M.
0
是的,當你從一個類繼承你得到它的所有方法,包括它從其他方面繼承的所有方法。
1
這取決於。
- 當A類的方法是私有的:沒有
- 當A類的方法是受保護:是
- 當A類的方法是公開的:是
- 當類中的方法A是公開的或者是受保護的並且是虛擬的,C類可以覆蓋該方法。
+2
也可以謹慎的指出,如果方法是虛擬的,那麼類B可以通過將類標記爲「密封」來防止類C重寫該方法。 – itsme86
0
public class A
{
public int Id { get; set; }
protected int protectedId { get; set; }
private int privateId;
}
public class B : A
{
}
public class C : B
{
public C()
{
int temp = Id; // works
int temp1 = protectedId; // works
int temp2 = privateId; // does NOT work
}
}
和其他一些類;
public void SomeMethod()
{
C c = new C();
int i = c.Id; // works
int j = c.protectedId; // does NOT work
int k = c.privateId; // does NOT work
}
相關問題
- 1. JavaScript繼承。從另一個類繼承的對象和方法
- 2. 如何從另一個繼承類的繼承類的說話
- 3. 子類繼承
- 4. C#:繼承一個子類,它從父
- 5. C++中的繼承(父類和子類)
- 6. 調用繼承中的子類方法
- 7. 超類可以從其子類繼承方法嗎?
- 8. 從基類演變爲可繼承類繼承類
- 9. 什麼是子類從C++中的基類繼承而來?
- 10. Python繼承 - 調用子類中的基類方法?
- 11. C++繼承,如何在基類的方法中調用子類的方法?
- 12. 繼承Java子類
- 13. Python子類繼承
- 14. Rails繼承子類
- 15. 子類Python類繼承
- 16. php繼承:子類繼承父類中的數據?
- 17. 多級繼承:從子類
- 18. Perl:繼承 - 基類和子類
- 19. 從另一個基類繼承的基類?
- 20. 繼承在lesscss,不繼承子類
- 21. 公開從基類繼承,從派生的類私有繼承
- 22. C#類與子類和繼承:在繼承類中的設置值
- 23. 使用從基類繼承的另一個類的變量的C++類函數繼承
- 24. 其他繼承類中的繼承類
- 25. 繼承基類
- 26. C++使用繼承接口的類的子類方法
- 27. 繼承類工廠方法的子類的問題(Objective-C)
- 28. 從子/子/繼承類獲取基類/父級/超級類
- 29. 繼承是否可以影響子類中的方法?
- 30. 繼承一個基類
這裏是一個小例子,大家的答案附和:http://ideone.com/E0xVzZ –