C#多态实现之虚方法
来源:互联网 发布:淘宝知识产权申诉失败 编辑:程序博客网 时间:2024/05/17 22:07
控制台应用程序中,新建一个People类文件,代码如下:
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace _13多态{ public class People { public People(string name) { this.Name = name; } public string Name { get; set; } //1.第一,将父类中的方法标记为“虚方法”:virtual //2.当一个方法是虚方法的时候,那么这个方法在子类中就可以被重写了。 //子类继承父类以后,可以直接使用该方法,也可以将该方法重写 public virtual void Show() { Console.WriteLine("哈哈哈!"); } } /// <summary> /// 中国人 /// </summary> public class Chinese : People { public Chinese(string name) : base(name) { } //3.子类如果要重写父类方法,则需要在子类的Show方法前,加一个override关键字,且有且只有这一个表示重写的override关键字。 public override void Show() { Console.WriteLine("我叫:{0},我是中国人!!",Name); } } /// <summary> /// 日本人 /// </summary> public class Japanese : People { public Japanese(string name) : base(name) { } public override void Show() { Console.WriteLine("我叫:{0},我是日本人!!", Name); } } /// <summary> /// 美国人 /// </summary> public class American : People { public American(string name) : base(name) { } public override void Show() { Console.WriteLine("我叫:{0},我是美国人!!", Name); } } /// <summary> /// 英国人 /// </summary> public class English : People { public English(string name) : base(name) { } public override void Show() { Console.WriteLine("我叫:{0},我是英国人!!", Name); } }}
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace _13多态{ //多态,即为多种表现形态;现实中就是事物的多种形态。在程序里,表现为父类的对象指向子类的实例,在调用方法时。调用的是子类重写的方法。 //实现手段:虚方法、接口、抽象类 //何时用多态??答:代码重用 class Program { static void Main(string[] args) { //面向对象重要原则 //对扩展开放,对修改关闭---开放封闭原则,扩展程序的同时不修改源代码 //格式设置热键:Ctrl+K+D:全局;Ctrl+K+F:选中部分:局部。 Chinese c1 = new Chinese("姚明"); Japanese j1 = new Japanese("向井"); American us1 = new American("T-Mac"); //添加一个 English en1 = new English("Tom"); //父类类型指向子类类型,即为实现多态 People p1 = new Chinese("刘翔"); People p2 = new Japanese("松下"); People[] cns = new People[] { c1, j1, us1, en1 }; //遍历数组中的每个元素,调用每个元素的Show方法 for (int i = 0; i < cns.Length; i++) { #region 第一种,只有三种国籍,还没有添加英国;旧版本 //判断当前的cns[i]中存储的对象是否是Chinese类型 if (cns[i] is Chinese) { //强制转换 Chinese cn = (Chinese)cns[i]; cn.Show(); } else if (cns[i] is Japanese) { Japanese cn = (Japanese)cns[i]; cn.Show(); } else if (cns[i] is American) { American cn = (American)cns[i]; cn.Show(); } #endregion #region 新版本 //在父类中添加virtual虚Show方法,通过cns[i]调用父类中的“虚方法”,进行判, //如果子类重写了父类的Show方法,则调用子类的Show方法;否则调用父类的Show方法 //即:如果cns[i]中存储的是Chinese类型,则调用Chinese的Show方法; //这就是多态的体现。 cns[i].Show(); #endregion } Console.WriteLine("ok"); Console.ReadKey(); } }}
Demo下载地址:http://download.csdn.net/detail/zxcvbnm32123/5785153
- C#多态实现之虚方法
- C#基础-----虚方法实现多态
- C#多态之虚方法
- C#面向对象 多态的实现之 - 虚方法和抽象类:
- C#多态的实现:虚方法、抽象类、接口
- C#多态性-虚拟方法实现多态
- C#多态性-虚拟方法实现多态
- C#面向对象之虚方法和多态
- C#初识6 多态之虚方法(virtual,override)
- C#实现语音聊天之DirectX方法
- C#多态实现之接口
- C#多态实现之抽象类
- [C#基础教程之]C# 实现多线程的同步方法详解
- C#之虚方法解读
- 视频捕获C#实现,之两种方法
- C# 适应虚函数,抽象类,接口分别实现多态的方法总结。
- 虚方法实现多态 C#中的5种访问修饰符
- 浅谈C# 多态的魅力(虚方法,抽象,接口实现)
- vim 自动补全
- VMWare不能安装64位操作系统原因探析
- 应用Hash函数(java描述)
- 由12306.cn谈谈网站性能技术
- session(会话)实现浏览器猜数游戏
- C#多态实现之虚方法
- POJ——1786(模拟)
- 在Android下加载驱动并进行调用
- 面试题8:旋转数组中的最小数字
- log4j
- oracle case when索引 空值索引 位图索引
- hdu1194
- hdu1259
- visual studio 解决方案项目结构部署和配置