在 C# 中,派生类可以包含与基类方法同名的方法。

  • 基类方法必须定义为 virtual

  • 如果派生类中的方法前面没有 newoverride 关键字,则编译器将发出警告,该方法将有如存在 new 关键字一样执行操作。

  • 如果派生类中的方法前面带有 new 关键字,则该方法被定义为独立于基类中的方法。

  • 如果派生类中的方法前面带有 override 关键字,则派生类的对象将调用该方法,而不是调用基类方法。

  • 可以从派生类中使用 base 关键字调用基类方法。

  • override、virtual 和 new 关键字还可以用于属性、索引器和事件中。

默认情况下,C# 方法为非虚方法。如果某个方法被声明为虚方法,则继承该方法的任何类都可以实现它自己的版本。若要使方法成为虚方法,必须在基类的方法声明中使用 virtual 修饰符。然后,派生类可以使用 override 关键字重写基虚方法,或使用 new 关键字隐藏基类中的虚方法。如果 override 关键字和 new 关键字均未指定,编译器将发出警告,并且派生类中的方法将隐藏基类中的方法

   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Linq;
   4:  using System.Text;
   5:   
   6:  namespace ConsoleApplication1
   7:  {
   8:      class Program
   9:      {
  10:          static void Main(string[] args)
  11:          {
  12:   
  13:              Car car1 = new Car();
  14:              car1.ShowAttribute();
  15:              System.Console.WriteLine("-------------------------");
  16:   
  17:   
  18:              Car car2 = new ConverDaZhong();
  19:              car2.ShowAttribute();
  20:              System.Console.WriteLine("-------------------------");
  21:   
  22:   
  23:              Car car3 = new Minivan();
  24:              car3.ShowAttribute();
  25:              System.Console.WriteLine("-------------------------");
  26:              System.Console.ReadKey();
  27:          }
  28:   
  29:   
  30:      }
  31:   
  32:      class Car
  33:      {
  34:          public virtual void ShowAttribute()
  35:          {
  36:              System.Console.WriteLine("这是一部汽车");
  37:          }
  38:      }
  39:   
  40:      class ConverDaZhong : Car
  41:      {
  42:          public new void ShowAttribute()
  43:          {
  44:              System.Console.WriteLine("这是一部大众汽车.");
  45:          }
  46:      }
  47:   
  48:      class Minivan : Car
  49:      {
  50:          public override void ShowAttribute()
  51:          {
  52:              //base.DescribeCar();
  53:              System.Console.WriteLine("这是一部MINI汽车");
  54:          }
  55:      }
  56:   
  57:  }

输入 出结果
 

最新文章

  1. spring/spring boot/spring cloud开发总结
  2. webstorm(注册,激活,破解,码,一起支持正版,最新可用)(2016.9.2更新)
  3. C++小常识笔记
  4. 超常用的PHP正则表达式收集整理
  5. asp.net导出excel示例代码
  6. 运用 DataContractSerializer 存储本地对象
  7. bzoj1927: [Sdoi2010]星际竞速
  8. CSS实现图片在div a标签中水平垂直居中
  9. onItemClick
  10. 创建文件DSN
  11. 卡尔曼滤波(Kalman Filter)
  12. java虚拟机和java内存区域概述
  13. C++ Primer 有感(函数)
  14. 用weexplus从0到1写一个app
  15. Qt中的QWebView
  16. CodeIgniter框架通过URL向控制器传递参数
  17. 解决方法:CentOS7用yum安装软件显示错误:cannot find a valid baseurl for repo: base/7/x86_64
  18. codeforces 161D Distance in Tree 树上点分治
  19. 洛谷 画栅栏Painting the Fence 解题报告
  20. Linux安装redis和部署

热门文章

  1. 【ALearning】第二章 Androidproject知识介绍
  2. hdu 4685 Prince and Princess(匈牙利算法 连通分量)
  3. [leetcode]3 Sum closest
  4. POJ3050 Hopscotch 【DFS】
  5. JSP内置对象之request
  6. wp天气预报
  7. start_kernel——boot_init_stack_canary
  8. POJ3190 Stall Reservations 【贪婪】
  9. ubuntu server编译安装nginx
  10. DESCryptoServiceProvider加密解密的简单使用例子