zoukankan      html  css  js  c++  java
  • C# 程序员参考 override

    使用 override 修饰符来修改方法、属性、索引器或事件。重写方法提供从基类继承的成员的新实现。由重写声明重写的方法称为重写基方法。重写基方法必须与重写方法具有相同的签名。

    不能重写非虚方法或静态方法。重写基方法必须是虚拟的、抽象的或重写的。

    重写声明不能更改虚方法的可访问性。重写方法和虚方法必须具有相同的访问级修饰符

    不能使用下列修饰符修改重写方法:

    new   static    virtual   abstract

    重写属性声明必须指定与继承属性完全相同的访问修饰符、类型和名称,并且重写属性必须是虚拟的、抽象的或重写的。

    有关访问基类成员的更多信息,请参见 7.5.8 基访问

    有关重写方法的更多信息,请参见 10.5.4 重写方法

    示例

    请参见 virtual 关键字的示例。

    从具有重写方法的派生类中,仍然可以通过使用 base 关键字来访问同名的重写基方法。例如,如果有虚方法 MyMethod() 和派生类上的重写方法,就可以通过下列调用从派生类访问此虚方法:

    base.MyMethod()

    将此方法与使用范围解析运算符 (::) 和基类名的 C++ 方法进行比较,例如:

    My_Base_Class_Name::MyMethod()

    示例

    在该示例中,有一个基类 Square 和一个派生类 Cube。因为立方体的面积是六个正方形的面积之和,因此可以通过调用基类上的 Area() 方法来计算。

    // cs_override_keyword.cs
    // Calling overriden methods from the base class
    using System;
    class TestClass 
    {
       public class Square 
       {
          public double x;
    
          // Constructor:
          public Square(double x) 
          {
             this.x = x;
          }
    
          public virtual double Area() 
          {
             return x*x; 
          }
       }
    
       class Cube: Square 
       {
          // Constructor:
          public Cube(double x): base(x) 
          {
          }
    
          // Calling the Area base method:
          public override double Area() 
          {
             return (6*(base.Area())); 
          }
       }
    
       public static void Main()
       {
          double x = 5.2;
          Square s = new Square(x);
          Square c = new Cube(x);
          Console.WriteLine("Area of Square = {0:F2}", s.Area());
          Console.WriteLine("Area of Cube = {0:F2}", c.Area());
       }
    }

    输出

    Area of Square = 27.04
    Area of Cube = 162.24
  • 相关阅读:
    Gym 100801D Distribution in Metagonia (数学思维题)
    Gym 100801E Easy Arithmetic (思维题)
    GNOME编辑器--gedit 构建基本脚本
    linux默认编辑器 sublime
    su和su-命令的本质区别
    #ifdef #ifndef使用
    linux 安装软件程序
    linux命令行与shell脚本编程大全---更多bash shell命令
    预处理语句--#define、#error和#warning
    FW开发代码规范---小任性(2)
  • 原文地址:https://www.cnblogs.com/chinatefl/p/132457.html
Copyright © 2011-2022 走看看