C#笔记(1)

 

、Virtual, override, abstract, new

 

      基类希望定义可以由子类重写的方法,必须指定 virtual 方法,子类重写的时候,必须使用 override 修饰该方法。

果希望防止派生类重写某个虚方法,可以使用 sealed 修饰:

class SalesPerson  :  Employee

{
   public override sealed void GiveBonus(float amout)
  { }
}

sealed Class PTSalesPerson  :  SalesPerson
{
   public override void GiveBonus(float amout)//error!
  { }
}
 

       如果需要防止创建类的对象,可以使用 abstract 关键字,抽象类的方法可以提供默认实现:

abstract class Shape
{
   public virtual void Draw()
   {   …..   }
}
 

       子类重写虚方法不是必须的,如果要强制每一个子类重写 Draw() 方法,可以使用 abstract 关键字将方法标记为抽象的。

public abstract class Shape
{
   public abstract void Draw();//不提供实现

}
 

        如果子类不重写抽象方法,该子类也必须定义成抽象类,抽象方法只能定义在抽象类中。

class  Circle
{
  public void Draw()
  {    ……  }
}

//Error

class ThreeDCircle : Circle
{
  public void Draw()
  {    ……  }
}
 

       这里有 Error ,因为子类和父类有相同的方法,可以有 2 中方法:使用 virtual override ,或者子类的方法加上

new 关键字,这时候表示子类完全是一个全新的方法,只不过名字相同而已。

public new void Draw()
{    ……  }

//注意

ThreeDCircle o = new ThreeDCircle();
o.Draw(); //子类
((Circle)o).Draw(); //强制调用基类
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值