Q
基類和派生類
0
A
回答
0
不,你不能。如果你碰巧知道一個聲明爲Base類的對象實際上是派生類,那麼你可以施放它。但是在基類中,你不能訪問派生類的成員。
2
您可以從基類代碼訪問派生類中的代碼,但只能從實際上是派生類對象的對象中訪問代碼,並且只有在涉及的方法是虛方法時纔可以。
如果您有一個本身就是基類實例的對象,那麼在該實例中您無法從基類中看到派生類代碼。
例如
public class Baseclass
{
public void Foo()
{
Bar();
}
public virtual void Bar()
{
print("I'm a BaseClass");
}
}
public classs Derived: BaseClass
{
public override void Bar()
{
print("I'm a Derived Class");
}
}
Main()
{
var b = new BaseClass();
x.Foo() // prints "I'm a BaseClass"
// This Foo() calls Bar() in base class
var d = new Derived();
d.Foo() // prints "I'm a Derived Class"
// in above, the code for Foo() (in BaseClass)
// is accessing Bar() in derived class
}
0
有很多的,一個基類可以訪問派生類(取決於編程語言)的成員方法,但通常它被認爲是一個設計的氣味。
相反,您通常希望基類僅直接訪問其自己的成員,並允許派生類重寫方法。
相關問題
- 1. 使用在基類派生類,而派生類的基類
- 2. 包中的基類和派生類
- 3. NHibernate的基類和派生類映射
- 4. 從基類INITIALISE派生類
- 5. C++ - 派生類到基類
- 6. 在派生類派生類到基類在PHP
- 7. 在基類和派生類中使用基類的裝飾器
- 8. C#和基礎派生類Casting
- 9. 派生自基類和覆蓋功能
- 10. 基礎和派生類分配
- 11. 檢測基類的派生指向派生類
- 12. Friendness和派生類
- 13. 分配派生類的基類
- 14. 從基類引用派生類參數
- 15. 明確投基類派生類
- 16. Java;將基類轉換爲派生類
- 17. 模板化基類中的派生類
- 18. 從派生類訪問基類函數
- 19. 基類內的派生類的大小
- 20. deepcopy /克隆派生類到基類
- 21. 派生類使用基類的屬性?
- 22. C#繼承。從基類派生類
- 23. 派生類訪問的基類 - 如何?
- 24. 將基類擴展爲派生類
- 25. 派生類的基類枚舉值?
- 26. C++派生類訪問基類成員
- 27. weak_ptr的基類,而shared_ptr是派生類?
- 28. 將派生類轉換爲基類
- 29. 基類和派生類的運行時類型信息
- 30. C++圖案:1x基站類+ NX派生類但具有_Last resort_派生類
你正在試圖做什麼 - 這聞起來像你的設計可能需要看? – Paddy 2010-07-07 15:23:23
如果您告訴我們您正在使用哪種編程語言,以及您正在嘗試完成什麼,那麼您將得到更有幫助的答案。 – 2010-07-07 15:26:58