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. XMLPull - 基類和派生類
- 2. 使用在基類派生類,而派生類的基類
- 3. 基礎和派生類C++
- 4. 基地和派生類
- 5. C++基類和派生類的限制
- 6. 包中的基類和派生類
- 7. NHibernate的基類和派生類映射
- 8. Python派生類和基類的屬性?
- 9. 從派生類到基類
- 10. 從基類INITIALISE派生類
- 11. C++ - 派生類到基類
- 12. 派生類通過基類
- 13. 在派生類派生類到基類在PHP
- 14. 在基類和派生類中使用基類的裝飾器
- 15. 向量基派生類
- 16. 派生類的基指針
- 17. C#和基礎派生類Casting
- 18. 派生自基類和覆蓋功能
- 19. 基礎和派生類分配
- 20. 檢測基類的派生指向派生類
- 21. 模板繼承類派生基指派
- 22. Friendness和派生類
- 23. 基類中的訪問派生類
- 24. C#繼承。從基類派生類
- 25. 角色對象基類派生的類
- 26. 將基類轉換爲派生類
- 27. 派生類訪問的基類 - 如何?
- 28. 將基類擴展爲派生類
- 29. weak_ptr的基類,而shared_ptr是派生類?
- 30. 派生類使用基類的屬性?
你正在試圖做什麼 - 這聞起來像你的設計可能需要看? – Paddy 2010-07-07 15:23:23
如果您告訴我們您正在使用哪種編程語言,以及您正在嘗試完成什麼,那麼您將得到更有幫助的答案。 – 2010-07-07 15:26:58