« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
|
统计 |
blog名称:小雨 日志总数:262 评论数量:1273 留言数量:15 访问次数:4667366 建立时间:2005年1月8日 |
| 
|
W3CHINA Blog首页 管理页面 写新日志 退出
[经验杂谈]c# 中 override ,abstract ,virtual ,interface 个人总结  |
小雨 发表于 2008/3/23 21:55:46 | interface ,abstract 中没有函数体的成员函数,必须在子类中重写。
重写abstract,virtual 中的函数时候,必须要用到override。其他时候不要用override。
虽然,在子类中也可以有与 父类virtual完全一样的函数,并且没有用override,实际上不是重写,而是重新创造(C#会默认为new关键字),与父类没有关系。用到override才真正的重写了父类的函数。
class ShapesClass{ public virtual void Area(){ System.Console.WriteLine("father");} }
class Square : ShapesClass{ public override void Area() { System.Console.WriteLine("son"); } public static void Main() { ShapesClass s=new Square(); s.Area(); ShapesClass d=new ShapesClass(); d.Area(); }}
输出: son
father
class ShapesClass{ public virtual void Area(){ System.Console.WriteLine("father");} }
class Square : ShapesClass{ public void Area() { System.Console.WriteLine("son"); } public static void Main() { ShapesClass s=new Square(); s.Area(); ShapesClass d=new ShapesClass(); d.Area(); }}
输出: father
father
|
阅读全文(6926) | 回复(0) | 编辑 | 精华 |
|