我試圖通過MSDN理解這些關鍵字,但每一個綁在另一個... 有人可以向我解釋他們的意思嗎?C#:基地,虛擬和覆蓋
1
A
回答
4
剛纔看了一下,記錄自己;-)
The C# Station Tutorial-Lesson 9: Polymorphism
base
是你通常所說的基類中的方法,在Java中稱爲super
如果我沒看錯的。
所以當你寫一個方法base.Name
時,你會得到你的類繼承/派生的基類的Name
屬性。
5
基
這是一種語言的關鍵字被用於指代基類,當前一個由(延伸)繼承的類。當您創建擴展另一個類的實例時,該實例也可以作爲基類來處理或使用。
虛擬
這意味着性質或功能可以在延伸類中重寫(類從基類定義性質或功能繼承)一種功能或性質改性劑。重寫函數或屬性必須與原始定義具有相同的簽名,但可以更改實現。虛擬函數或屬性必須立即在其定義的類中實現,而抽象方法或屬性僅在擴展類中實現。
倍率
用於指示就下面的功能或性質或延伸覆蓋從基類的等效功能或性質的編譯器的功能或性質改性劑。
2
base
:在使用基本類型而不是當前類型定義的成員時使用。
virtual
:方法和屬性可以是虛擬的,這意味着它們可以被更專門的類覆蓋。
override
:當一個虛擬方法應該被一個新的實現在降序類中覆蓋時,你必須使用這個關鍵字而不是virtual
。
實施例:
class A {
public void X() {}
public virtual void Y() {}
}
class B: A {
public new void X() {} // defines a new method which does not override A.X
public override void Y() { // override A.Y with a new implementation
base.Y(); // calls the A.Y implementation
}
public virtual void Z() {} // additional virtual method on B
}
A a = new B();
a.X(); // calls A.X, not B.X
a.Y(); // calls B.Y because it is virtual and overridden
a.Z(); // syntax error - Z does not exist on an instance of type A
相關問題
- 1. 演員派生虛擬覆蓋基地純虛擬成員
- 2. C++虛擬方法覆蓋
- 3. C#虛擬內部工作和覆蓋
- 4. C#虛擬&覆蓋關鍵字
- 5. 虛擬方法覆蓋在C++
- 6. C#繼承虛擬或覆蓋
- 7. 覆蓋C++中的非虛擬繼承
- 8. 覆蓋C++的虛擬方法
- 9. 瞭解虛擬/覆蓋
- 10. 覆蓋非虛擬方法?
- 11. 覆蓋和隱藏虛擬功能
- 12. 虛擬,覆蓋,新和密封覆蓋之間的區別
- 13. 安全地覆蓋C++虛函數
- 14. C#繼承 - 爲什麼使用覆蓋和虛擬?
- 15. 內部工作的虛擬和覆蓋在C#中?
- 16. C++成員函數的虛擬覆蓋和過載,同時
- 17. 覆蓋虛擬功能到非虛擬功能可以嗎?
- 18. 用純虛擬覆蓋虛擬..是否可以?
- 19. Castle.ActiveRecord如何覆蓋虛擬屬性?
- 20. 如何覆蓋非虛擬方法?
- 21. 使用虛擬覆蓋方法簽名
- 22. 覆蓋Object的虛擬方法
- 23. 覆蓋合格的虛擬方法
- 24. 虛擬方法未被覆蓋?
- 25. html鏈接覆蓋虛擬路徑
- 26. 覆蓋非虛擬功能和虛擬功能有什麼區別?
- 27. 「C#基類虛函數」 - 「在託管C++ ref類中覆蓋」
- 28. 虛擬函數是否覆蓋基類中同名的非虛函數?
- 29. 覆蓋和C#
- 30. C# - 爲什麼虛擬函數不能覆蓋抽象函數?