C# 读书笔记之访问虚方法、重写方法和隐藏方法
C#允许派生类中的方法与基类中方法具有相同的签名:基类中使用关键字virtual定义虚方法;然后派生类中使用关键字override来重写方法,或使用关键字new来覆盖方法(隐藏方法)。 重写方法用相同的签名重写所继承的虚方法。 虚方法 声明用于 引入新方法 ,而 重写方法或隐藏方法 声明则是用于使现有的 继承虚方法专用化( 通过提供该方法的新实现 ) 注意:如果签名相同的方法在基类和派生类都进行了声明,但该方法没有声明为virtual和override/new,则派生类方法就会隐藏基类方法,但系统编译时会产生警告信息。因为隐藏方法会存在为给定类的实例调用错误方法的危险,故应该显示地定义隐藏方法。 调用虚方法时,将首先检查该对象的运行时类型,并调用派生类中的该重写成员。如果没有派生类重写该成员,则调用其原始数据。 默认情况下,C#方法是非虚拟的。 不能重写非虚方法 ,重写非虚方法将导致编译错误。 除了类方法外,还可以使用virtual关键字其他类成员以定义虚成员,包括属性【无参属性】、索引器【含参属性】或事件声明。虚拟成员的实现可在派生类使用关键字override来重写;或使用关键字new来覆盖。 注意:virtual 修饰符不能与static、abstract、private或override修饰符一起使用。 例: 虚方法,重写方法和隐藏方法示例:Dimensions类包含x