博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#之多态
阅读量:5332 次
发布时间:2019-06-14

本文共 2359 字,大约阅读时间需要 7 分钟。

多态:让一个类能够表现多种状态(类型)。

实现多态的3种手段:虚方法,抽象类,接口

1、先介绍虚方法,父类方法用virtual标记(public virtual void SayHello() {......}),子类方法用override标记(public override void SayHello(){......}),父类中放入子类,当调用父类方法时会自动使用子类方法

举例说明

using System;namespace virsual_override{    //    class Program    {        static void Main(string[] args)        {            //English en1 = new English("Jim");            //English en2 = new English("Lucy");            //Korea kr1 = new Korea("金秀贤");            //Korea kr2 = new Korea("金正恩");            //Persion[] pers = { en1, en2, kr1, kr2 };            Persion[] pers = { new English("Jim"),new English("Lucy"),new Korea("金秀贤"),new Korea("金正恩")};            for (int i = 0; i < pers.Length; i++)            {                pers[i].SayHello();            }            Console.Read();        }    }    class Persion    {        public string Name { get; set; }        public Persion(string name)        {            this.Name = name;        }        public virtual void SayHello()        {            Console.WriteLine("我是人类");        }    }    class English : Persion    {        public string Name { get; set; }        public English(string name) : base(name)        {            this.Name = name;        }        public override void SayHello()        {            Console.WriteLine("我是{0}", this.Name);        }    }    class Korea : Persion    {        public string Name { get; set; }        public Korea(string name) : base(name)        {            this.Name = name;        }        public override void SayHello()        {            Console.WriteLine("我是{0}", this.Name);        }    }}

结果显示:

2、抽象类

当父类中的方法不知道怎么实现的时候,可以考虑把父类写成抽象类,把方法写成抽象方法。

using System;namespace abstract_fangfa{    class Program    {        static void Main(string[] args)        {            //Animal a = new Animal();这样会报错,抽象类不循序实体化            Animal a = new Dog();            a.Bark();            Console.Read();        }            }    public abstract class Animal    {        public abstract void Bark();    }    public class Dog:Animal    {        public override void Bark()        {            Console.WriteLine("Dog wangwang Barking");        }    }    public class cat : Animal    {        public override void Bark()        {            Console.WriteLine("Dog miaomiao Barking");        }    }}

结果

3、接口是一种规范,能力

转载于:https://www.cnblogs.com/javier520/p/10828413.html

你可能感兴趣的文章
CSS 透明度级别 及 背景透明
查看>>
Linux 的 date 日期的使用
查看>>
PHP zip压缩文件及解压
查看>>
SOAP web service用AFNetWorking实现请求
查看>>
Java变量类型,实例变量 与局部变量 静态变量
查看>>
mysql操作命令梳理(4)-中文乱码问题
查看>>
Python环境搭建(安装、验证与卸载)
查看>>
一个.NET通用JSON解析/构建类的实现(c#)
查看>>
Windows Phone开发(5):室内装修 转:http://blog.csdn.net/tcjiaan/article/details/7269014
查看>>
详谈js面向对象 javascript oop,持续更新
查看>>
关于这次软件以及pda终端的培训
查看>>
jQuery上传插件Uploadify 3.2在.NET下的详细例子
查看>>
如何辨别一个程序员的水平高低?是靠发量吗?
查看>>
新手村之循环!循环!循环!
查看>>
正则表达式的用法
查看>>
线程安全问题
查看>>
SSM集成activiti6.0错误集锦(一)
查看>>
下拉刷新
查看>>
linux的子进程调用exec( )系列函数
查看>>
MSChart的研究
查看>>