看到自己以前的一篇博客,感觉还差点什么,√,代码...

using System;

namespace Test
{
public class Program
{
private static void Main(string[] args)
{
//调用...
Dog dog = new Dog();
dog.VirtualMethod();
dog.NoVirtualMethod();
Console.Read();
}
} #region 测试代码
/// <summary>
/// 基类:动物
/// </summary>
public class Animals
{
public virtual void VirtualMethod()
{
Console.WriteLine("父类→标记'virtual'的方法→VirtualMethod");
}
public void NoVirtualMethod()
{
Console.WriteLine("父类→未标记'virtual'的方法→NoVirtualMethod");
}
}
/// <summary>
/// 子类:汪星人
/// </summary>
public class Dog : Animals
{
public override void VirtualMethod()
{
Console.WriteLine("子类→重写方法→VirtualMethod");
}
/*
/// <summary>
/// 错误 CS0506 “Dog.NoVirtualMethod()”: 继承成员“Animals.NoVirtualMethod()”未标记为 virtual、abstract 或 override,无法进行重写
/// </summary>
public override void NoVirtualMethod()
{
Console.WriteLine("子类→重写方法→NoVirtualMethod");
base.NoVirtualMethod();
}
*/
/// <summary>
/// 警告 CS0108 “Dog.NoVirtualMethod()”隐藏继承的成员“Animals.NoVirtualMethod()”。如果是有意隐藏,请使用关键字 new。
/// </summary>
public void NoVirtualMethod()
{
base.NoVirtualMethod();//base访问父类...扩展一下...
Console.WriteLine("子类→未重写方法→NoVirtualMethod");
}
//new public void NoVirtualMethod()
//{
// Console.WriteLine("子类→new方法→NoVirtualMethod");
//}
}
#endregion }

上面代码结果:

由此可以看出↓

当基类[Animals]的方法[NoVirtualMethod]未标记为[virtual]的时候,

子类[Dog]中是没有办法[override]重写的...

提示:“Dog.NoVirtualMethod()”: 继承成员“Animals.NoVirtualMethod()”未标记为 virtual、abstract 或 override,无法进行重写

从智能提示中也可以看出来↓,没有提示[NoVirtualMethod]可以进行重写...

如上面代码那样[强行](已经出现警告了)在子类中写一个和父类同名的方法,调用的时候还是会显示使用子类的方法...

我理解的就是:子类和父类中的方法同名了,子类隐藏了父类的方法,推荐写法就是使用new

new public void NoVirtualMethod()
{
Console.WriteLine("子类→new方法→NoVirtualMethod");
}

xxx

基础知识系列☞关键字→virtual的更多相关文章

  1. 基础知识系列☞Abstract和Virtual→及相关知识

    转载地址→http://www.cnblogs.com/blsong/archive/2010/08/12/1798064.html 在C#的学习中,容易混淆virtual方法和abstract方法的 ...

  2. C# 基础知识系列- 9 字符串的更多用法(一)

    0. 前言 在前面的文章里简单介绍了一下字符串的相关内容,并没有涉及到更多的相关内容,这一篇将尝试讲解一下在实际开发工作中会遇到的字符串的很多操作. 1. 创建一个字符串 这部分介绍一下如何创建一个字 ...

  3. C# 基础知识系列- 10 反射和泛型(二)

    0. 前言 这篇文章延续<C# 基础知识系列- 5 反射和泛型>,继续介绍C#在反射所开发的功能和做的努力.上一篇文章大概介绍了一下泛型和反射的一些基本内容,主要是通过获取对象的类型,然后 ...

  4. C# 基础知识系列- 14 IO篇 文件的操作 (3)

    本篇继续前两篇内容,跟大家介绍一下Path类以及FileSystemInfo这个类的主要方法和属性. 上文提到,在<C# 基础知识系列-IO篇>之文件相关的内容完结之后,会带领大家开发一个 ...

  5. 基础知识系列☞C#中→属性和字段的区别

    "好吧...准备写个'基础知识系列',算是记录下吧,时时看看,更加加深记忆···" 其实本来准备叫"面试系列"... 字段.属性.你先知道的哪个概念? ***我 ...

  6. 学习javascript基础知识系列第二节 - this用法

    通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...

  7. 学习javascript基础知识系列第三节 - ()()用法

    总目录:通过一段代码学习javascript基础知识系列 注意: 为了便于执行和演示,建议使用chrome浏览器,按F12,然后按Esc(或手动选择)打开console,在console进行执行和演示 ...

  8. C# 基础知识系列- 3 集合数组

    简单的介绍一下集合,通俗来讲就是用来保管多个数据的方案.比如说我们是一个公司的仓库管理,公司有一堆货物需要管理,有同类的,有不同类的,总而言之就是很多.很乱.我们对照集合的概念对仓库进行管理的话,那么 ...

  9. C# 基础知识系列- 12 任务和多线程

    0. 前言 照例一份前言,在介绍任务和多线程之前,先介绍一下异步和同步的概念.我们之间介绍的知识点都是在同步执行,所谓的同步就是一行代码一行代码的执行,就像是我们日常乘坐地铁通过安检通道一样,想象我们 ...

随机推荐

  1. Swift 类型嵌套

    1.类型嵌套 Swift 支持类型嵌套,把需要嵌套的类型的定义写在被嵌套的类型的 {} 中. Swift 中的枚举类型可以辅助实现特定的类或者结构体的功能. struct SchoolUniform ...

  2. Nginx 功能模块

    一.Nginx 核心功能模块 Nginx 核心功能模块负责 Nginx 的全局应用,主要对应主配置文件的 Main 区块和 Events 区块,这里有很多 Nginx 必须的全局参数配置. Nginx ...

  3. C#_基础题1-10套答案

    one 1.用户输入一个整数,用if...else判断是偶数还是奇数             Console.WriteLine("请输入一个整数:");              ...

  4. C#学习笔记(33)——批量修改word标题

    说明(2017-12-22 11:20:44): 1. 因为数学脚本的主标题和副标题没有格式,目录导航里不显示,修改的时候不好定位,所以需要改成下图格式: 2. 问题的难点有两个,一个是word的操作 ...

  5. java框架篇---hibernate之连接池

    Hibernate支持第三方的连接池,官方推荐的连接池是C3P0,Proxool,以及DBCP.在配置连接池时需要注意的有三点: 一.Apche的DBCP在Hibernate2中受支持,但在Hiber ...

  6. 【iCore1S 双核心板_ARM】例程九:DAC实验——输出直流电压

    实验原理: STM32内部集成12位DAC,可以配置成12位或8位,DAC具有两个独立转换通道, 在双DAC模式下,DA转换可被配置成独立模式或工作模式,iCore1S中DAC参考电压为 2.5V.本 ...

  7. composer 再centos 下的安装

    $ curl -sS https://getcomposer.org/installer | php $ sudo mv composer.phar /usr/local/bin/composer

  8. MYSQL + MHA +keepalive + VIP安装配置(三)--keepalived安装配置

    一.概述 keepalived介绍:Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web 服务器从系统中剔除 ...

  9. 【转帖】流程与IT管理部——IT支撑业务变革的必然趋势

    流程与IT管理部——IT支撑业务变革的必然趋势 1前言 伴随着中国企业的信息化进程, IT部门.IT专职人员已经在大部分企业获得了一席之地,电脑.网络.软件的维护都离不开这个部门:不过“一席之地”并不 ...

  10. GDC2017 把“现实的天空”在游戏内再现【Forza Horizon 3】的天空表现

    原文链接 http://game.watch.impress.co.jp/docs/news/1047800.html 完全表现出现实世界中各种偶然而不可预料的风景!     [Forza Horiz ...