边写边学.Net之方法的重写

 

重写,通俗的理解就是,把以前的东东重写一遍。
首先,我们来看看在什么情况下,会需要重写父类的方法呢?
第一、父类提供的方法为抽象(abstract)方法,抽象方法是不可用的,子类必须要对其实现(重写)。
第二、父类提供的方法(非抽象方法)不能满足子类的需求时,子类可以根据自身要求进行重写。

1.我们先看第一种情况,父类的方法定义为abstract,即没有具体实现,抽象方法是不可以直接调用的,如果强行调用,在编译器这一关就过不去。

 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 namespace WritingAndLearning
7 {
8 abstract class BaseClass
9 {
10 public abstract void BaseAbstarctMethod();
11 }
12 }
 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 namespace WritingAndLearning
7 {
8 class SubClass:BaseClass
9 {
10 public override void BaseAbstarctMethod()
11 {
12 base.BaseAbstarctMethod();//直接调用父类抽象方法,编译器会报错
13 }
14 }
15 }

错误截图如下:

该图显示,不能调用父类的抽象成员。

子类中的重写方法修改成下面的Code后,编译器错误消失,正常运行。

 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 namespace WritingAndLearning
7 {
8 class SubClass:BaseClass
9 {
10 public override void BaseAbstarctMethod()
11 {
12 //base.BaseAbstarctMethod();//直接调用父类抽象方法,编译器会报错
13 Console.WriteLine("This is an override method.");//子类自己的实现
14 }
15 }
16 }

总结:其实这里对抽象方法的重写,更好的一种叫法,是对父类抽象方法的实现,因为父类只给出了一个申明,并没有方法体,所以称之为抽象方法实现更为妥当。

 

2.隐藏并重写父类方法

父类中用abstract修饰的方法,为抽象方法,只有方法申明,没有方法实现。

父类中用virtual修饰的方法,为虚方法,必须有方法申明和方法实现。

对父类中非抽象方法的重写,有两种途径,分别使用两个关键字override和new.

我们先看看关键字override

 

转载于:https://www.cnblogs.com/Rubby-Zhou/archive/2012/03/05/2380212.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值