,是否有可能使用相同的簽名調用方法的基本版本和派生版本,而不是重寫基類版本?在C#和C++中都調用基本方法和派生方法
1
A
回答
3
對於C++,您可以使用範圍解析操作:
Derived d;
d.Base::Method();
5
在C#中,不若派生方法是重寫的,但如果它被標記爲new
肯定。儘管如此,在使用這個構造時,你必須小心,因爲在大多數情況下,你的對象的消費者並不會真正發生;
static class Program
{
static void Main()
{
Base baseObject = new Derived();
Derived derivedObject = new Derived();
Console.Write(derivedObject.Test());
Console.Write(baseObject.Test());
Console.Write(((Base)derivedObject).Test());
}
}
class Base
{
public virtual int Test()
{
return 1;
}
}
class Derived : Base
{
public new int Test()
{
return 2;
}
}
+0
+1不錯的C#示例 – billz
相關問題
- 1. C++無法從派生類中調用基類方法
- 2. C++:派生類和虛擬方法
- 3. C++派生類方法調用
- 4. C++如何從基類中調用派生類中的方法
- 5. C++ - 從方法基類中調用派生類中的重寫方法
- 6. C++調用派生類中基類的模板方法
- 7. 從派生類中調用C#基類擴展方法?
- 8. C++ - 基類指針,方法指針,引用派生類,方法?
- 9. 繼承方法,派生方法調用不是基本
- 10. 基本方法被調用,而不是派生方法
- 11. 如何在Objective-C中創建和調用基本方法?
- 12. C#繼承防止基類的方法調用派生類的方法
- 13. C++如何從多個派生類調用基類方法?
- 14. C++繼承:派生類指向基類調用Derived類方法
- 15. 如何從C++派生類調用基類方法?
- 16. C++和「telephaty」方法調用
- 17. 如何從派生類方法調用基類方法?
- 18. 從靜態基類方法調用靜態派生類方法
- 19. 從派生類方法調用基類方法
- 20. 派生類的方法從基類調用方法
- 21. 爲什麼調用基類方法代替派生類方法?
- 22. C#調用基方法與另一本
- 23. 基礎和派生類C++
- 24. 在C#中如何調用派生類實例中已在派生類中重寫的基類方法
- 25. 在派生類的方法中使用基類的方法
- 26. 無法在C中調用C++方法#
- 27. 無法從派生類中調用基類方法
- 28. C#FetchAsync和委託調用在方法
- 29. 在Java調用方法和C#
- 30. C++使用抽象基類方法創建派生類
在C#中,您可以簡單地在派生類「Method」內調用base.Method()。但我猜這不是你想要做的?從理論上講,外部世界永遠不應該知道你的課程是從任何東西中派生出來的。你派生類的抽象應該是它需要知道的一切。 – itsme86
可能重複的: http://stackoverflow.com/questions/4262750/calling-the-base-classs-implementation-from-the-derived –