回到 目录

之所以写这篇文章,完全是因为这次代码审核,这次代码审核过程当中,出现了很多我认为基础知识不够扎实的问题,所以,打算把它们记录下来,共大家分享。

方法的override,即方法的覆写或者重写,有时还是习惯叫它英文override,它是指将父类的abstract或者virtual方法进行重新设计,可以将新的功能加入其中,看起来很不错,但在使用过程中,有时我们可能拿不准它,下面我说几点:

一  父类是抽象类,这时,它的实例化需要通过子类来完成,这时的override是子类最后重写的

二  父类是普通类,这时,它的实例化工作如果由自己完成,结果就是父类virtual的结果,与它的子类无关。

三  父类是普通类,它的实例化工作如果由子类完成,那么,它的结果就是子类方法override的结果

OK,下面我们来说一下例子,它由father类和sons类组成,father类是一个普通类,在这实现当中,它很可能是个泛型类,如仓储模式的实现

   /// <summary>
/// 一个爸爸
/// </summary>
class Father
{
public virtual void print()
{
Console.WriteLine("我是爸爸");
}
}

下面是儿子A对爸爸的print方法的重写工作

    /// <summary>
/// 一个儿子A
/// </summary>
class SonA : Father
{
public override void print()
{
Console.WriteLine("我是儿子");//override father class print method.
} public void sonPrint()
{
base.print(); //我是爸爸
print();//我是儿子 }
}

而下面是对print方法的各种调用工作,包括了实现化的方式

     static void Main(string[] args)
{ SonA son = new SonA();
son.sonPrint(); //我是爸爸,我是儿子
Father father = new Father();
father.print();//我是爸爸
Father son2 = new SonA();
son2.print();//儿是儿子
}

OK,通过结果我们可以看出:

在儿子类里,base.print()方法走的是爸爸的print;print走的是儿子

在儿子类以外,使用爸爸自己去实例化后,print走的是爸爸的;使用儿子进行实例化后,print方法走的是儿子重写后的;

回到 目录

最新文章

  1. WebAPI2使用AutoFac依赖注入完整解决方案。
  2. [转]查看Flash Log输出
  3. HTML5五种客户端离线存储方案
  4. setTimeout,setInterval,process.nextTick,setImmediate in Nodejs
  5. ServiceStack 概念参考文摘
  6. kafka环境搭建及librdkafka测试
  7. The sandbox is not in sync with the Podfile.lock. Run &#39;pod install&#39; or update your CocoaPods installation.
  8. PHP-字符串过长不用担心
  9. 4.Knockout.Js(事件绑定)
  10. MySql 跟踪命令
  11. UBUNTU 下如何升级 gcc, g++
  12. Games on a CD
  13. php生成器使用总结
  14. 小白也能看懂插件化DroidPlugin原理(一)-- 动态代理
  15. Ubuntu16.04 编译 OpenJDK7
  16. IS创新之路 -- 都昌公司赋能型HIT企业发展之路
  17. 【blog】SpringBoot事务
  18. &lt;T extends Comparable&lt;? super T&gt;&gt;什么意思
  19. select2插件使用小记
  20. HDU_5688

热门文章

  1. css js 的引入方式和书写位置
  2. sys.dm_tran_locks,
  3. UIAppearance
  4. NFS 网络文件系统挂载在A8板子上
  5. HP iLo2 试用序列号
  6. ExtJs 3.0 动态生成 CheckBox
  7. 深度解析Java8 – AbstractQueuedSynchronizer的实现分析(下)
  8. [UE4]AnimDynamics简介
  9. uva 11174 Stand in a Line
  10. iOS开发流程总结