虚方法     
   
  理解:从字面意思来讲,“虚”,可有可无,子类对父类的某种方法的重写,可以重写,也可以不重写。     
虚方法,顾名思义(装个13),就是某种方法。
  用法:public virtual void TestMethod(){}
     必须为public,因为虚拟成员不能是私有的。
-------------------------------------------------------------------------
  体现:虚方法是多态特性的一种体现。
-------------------------------------------------------------------------
实例运用:多个儿子继承一个父亲,但是他们有共同于父亲的东西,例如血型,他们都是一样的吧。
但是,他们的个性啊,身材啊,都有所差别了。这时候,应该是调用父亲的血缘,拥有共同的血缘。


  

   class DjwFather
{
public virtual void Method()
{
Console.WriteLine("我是A型号血");
}
} class TestSon: DjwFather
{
public override void Method()
{
base.Method(); // 这边可以注释,可以不注释;还可以把这个移动到最下面看看运行结果
Console.WriteLine("我是儿子");
}
} class TestDauter : DjwFather
{
public override void Method() //这个跟上面一个操作
{
base.Method();
Console.WriteLine("我是女儿");
}
} class Program
{
static void Main(string[] args)
{
TestSon tone = new TestSon(); //实例化
tone.Method(); //调儿子
TestDauter ttwo = new TestDauter(); //可以把这个注释对比上面。
ttwo.Method(); Console.ReadKey(); // 可以运行结果定住不动。
}
}


注:Base关键字在这里的作用是,只要写上base.Method() 这个base代表父类,即代表的是调用父类的该方法。base,以及override,可以写也可以不写。(跟抽象类中抽象方法不同)

学习方法:如果你不清楚virtual怎么用,就把上面的代码粘贴复制,反复把注释的代码,不注释,自己查看运行结果,这样更加可以理解virtual怎么用,以及override怎么用。
还有就是把base.Method()移到子类Method内部方法的最下面。
个人认为,这是最好的让你明白的方法,跟你讲再多,不如自己实际敲一遍,运行一下。
推荐初学,先粘贴复制,删掉注释重新运行查看运行结果,尤其注意加base,不加base的结果。

  

浅谈 虚方法(virtual)的更多相关文章

  1. Delphi之静态方法,虚方法virtual,动态dynamic,抽象abstract,消息

    Delphi之静态方法,虚方法virtual,动态dynamic,抽象abstract,消息 http://www.cnblogs.com/zhwx/archive/2012/08/28/266055 ...

  2. C#虚方法virtual详解

    转: http://www.cnblogs.com/jason_yjau/archive/2009/08/25/1553949.html C#虚方法virtual详解 在C++.Java等众多OOP语 ...

  3. 虚方法(virtual)和抽象方法(abstract)的和接口(interface)的区别

    虚方法(virtual)和抽象方法(abstract)的区别 2017年06月15日 13:41:26 阅读数:65 注:本文转载自 http://www.cnblogs.com/michaelxu/ ...

  4. 4.C#虚方法virtual详解

    C#虚方法virtual详解 在C++.Java等众多OOP语言里都可以看到virtual的身影,而C#作为一个完全面向对象的语言当然也不例外. 虚拟函数从C#的程序编译的角度来看,它和其它一般的函数 ...

  5. 抽象方法(abstract method) 和 虚方法 (virtual method), 重载(overload) 和 重写(override)的区别于联系

    1. 抽象方法 (abstract method) 在抽象类中,可以存在没有实现的方法,只是该方法必须声明为abstract抽象方法. 在继承此抽象类的类中,通过给方法加上override关键字来实现 ...

  6. 虚方法virtual详解

    虚方法virtual详解   从C#的程序编译的角度来看,它和其它一般的函数有什么区别呢?一般函数在编译时就静态地编译到了执行文件中,其相对地址在程序运行期间是不发生变化的,也就是写死了的!而虚函数在 ...

  7. 虚方法(virtual)

    虚方法(virtual) Virtual 关键字用于修饰方法.属性.索引器或事件声明,并且允许在派生类中重写这些对象. 看一段代码: using System ; class A { public v ...

  8. [转]虚方法(virtual)和抽象方法(abstract)的区别

    虚方法和抽象方法都可以供派生类重写,它们之间有什么区别呢? 1. 虚方法必须有实现部分,抽象方法没有提供实现部分,抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化.如: //抽象方法pub ...

  9. 虚方法(virtual)和抽象方法(abstract)的区别

    注:本文转载自 http://www.cnblogs.com/michaelxu/archive/2008/04/01/1132633.html 虚方法和抽象方法都可以供派生类重写,它们之间有什么区别 ...

随机推荐

  1. HTML移动端开发常见的兼容性总结

    1.安卓浏览器看背景图片,有些设备会模糊.用同等比例的图片在PC机上很清楚,但是手机上很模糊,原因是什么呢?经过研究,是devicePixelRatio作怪,因为手机分辨率太小,如果按照分辨率来显示网 ...

  2. http-server 命令行

    安装 (全局安装加 -g) : npm install http-server (npm install --global http-server) 在站点目录下开启命令行输入 http server ...

  3. MySQL优化四(优化表结构)

    body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-top: 10 ...

  4. Vue基本入门

    介绍 1.Vue.js是什么? Vue.js(读音:/vju:/,类似于view)是一套构建用户界面的渐进式框架,与其他重量级框架不同的是,Vue采用的是自底向上增量开发的设计. Vue的核心库只关注 ...

  5. SQLSERVER2008 错误18456

    我遇到的问题,已经解决,如果你遇到不能解决可以咨询我 1.以windows验证模式进入数据库管理器. 第二步:右击sa,选择属性: 在常规选项卡中,重新填写密码和确认密码(改成个好记的).把强制实施密 ...

  6. Eclipse使用Maven创建Web项目+整合SSM框架

    一.准备环境: maven:apache-maven-3.2.3 jdk:jdk1.8.0_25 tomcat:tomcat-9.0 二.配置Maven.jdk 1.Window——>Prefe ...

  7. python IP地址转16进制

    python IP地址转16进制 第一种方法: 通过socket.inet_aton实现 import socket from binascii import hexlify ary='192.168 ...

  8. java日期处理函数

    java中获取本年第一天的日期 public static Timestamp getYearFirstDay() { Calendar calendar = Calendar.getInstance ...

  9. spring mvc和web-flow的整合方案

    发现了一份整合spring MVC 和webflow的很好的资料,日后翻译出来发布.先记着. http://docs.spring.io/spring-webflow/docs/2.3.x/refer ...

  10. 2017java预备作业2

    1 安装git • 到Git官网https://www.git-scm.com/ 下载Git客户端 • 安装时选择默认即可. • 安装完成后在桌面的快捷菜单中选择Git Bash Here 或者在开始 ...