首页 > 代码库 > override (C# 参考)--MSDN
override (C# 参考)--MSDN
要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用 override 修饰符。
abstract class ShapesClass{ abstract public int Area();}class Square : ShapesClass{ int side = 0; public Square(int n) { side = n; } // Area method is required to avoid // a compile-time error. public override int Area() { return side * side; } static void Main() { Square sq = new Square(12); Console.WriteLine("Area of the square = {0}", sq.Area()); } interface I { void M(); } abstract class C : I { public abstract void M(); }}// Output: Area of the square = 144
override 方法提供从基类继承的成员的新实现。 由 override 声明重写的方法称为重写基方法。 重写的基方法必须与 override 方法具有相同的签名。 有关继承的信息,请参见继承(C# 编程指南)。
不能重写非虚方法或静态方法。 重写的基方法必须是 virtual、abstract 或 override 的。
override 声明不能更改 virtual 方法的可访问性。 override 方法和 virtual 方法必须具有相同的访问级别修饰符。
您不能使用 new、static 或 virtual 修饰符来修改 override 方法。
重写属性声明必须指定与继承属性完全相同的访问修饰符、类型和名称,并且被重写的属性必须是 virtual、abstract 或 override 的。
有关如何使用 override 关键字的更多信息,请参见使用 Override 和 New 关键字进行版本控制(C# 编程指南)和了解何时使用 Override 和 New 关键字。
此示例定义了一个名为 Employee 的基类和一个名为 SalesEmployee 的派生类。 SalesEmployee 类包括一个额外的属性 salesbonus,并重写方法 CalculatePay 以便将该属性考虑在内。
1 class TestOverride 2 { 3 public class Employee 4 { 5 public string name; 6 7 // Basepay is defined as protected, so that it may be 8 // accessed only by this class and derrived classes. 9 protected decimal basepay;10 11 // Constructor to set the name and basepay values.12 public Employee(string name, decimal basepay)13 {14 this.name = name;15 this.basepay = basepay;16 }17 18 // Declared virtual so it can be overridden.19 public virtual decimal CalculatePay()20 {21 return basepay;22 }23 }24 25 // Derive a new class from Employee.26 public class SalesEmployee : Employee27 {28 // New field that will affect the base pay.29 private decimal salesbonus;30 31 // The constructor calls the base-class version, and32 // initializes the salesbonus field.33 public SalesEmployee(string name, decimal basepay, 34 decimal salesbonus) : base(name, basepay)35 {36 this.salesbonus = salesbonus;37 }38 39 // Override the CalculatePay method 40 // to take bonus into account.41 public override decimal CalculatePay()42 {43 return basepay + salesbonus;44 }45 }46 47 static void Main()48 {49 // Create some new employees.50 SalesEmployee employee1 = new SalesEmployee("Alice", 51 1000, 500);52 Employee employee2 = new Employee("Bob", 1200);53 54 Console.WriteLine("Employee4 " + employee1.name + 55 " earned: " + employee1.CalculatePay());56 Console.WriteLine("Employee4 " + employee2.name + 57 " earned: " + employee2.CalculatePay());58 }59 }60 /*61 Output:62 Employee4 Alice earned: 150063 Employee4 Bob earned: 120064 */
override (C# 参考)--MSDN
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。