继承与多态的锦集
2016-04-10 18:46
363 查看
继承
首先我们了解一下继承的作用:移除类的冗余代码
下面是代码展示:
我们先建出一个main函数,一个父类(Exec)和两个子类(PM,CM)
完成效果图
![](https://images2015.cnblogs.com/blog/898538/201604/898538-20160410183249937-778159444.png)
![](https://images2015.cnblogs.com/blog/898538/201604/898538-20160410180602109-1990488599.png)
![](https://images2015.cnblogs.com/blog/898538/201604/898538-20160410180647609-405772409.png)
![](https://images2015.cnblogs.com/blog/898538/201604/898538-20160410180844843-2044913086.png)
![](https://images2015.cnblogs.com/blog/898538/201604/898538-20160410180801000-1746535513.png)
![](https://images2015.cnblogs.com/blog/898538/201604/898538-20160410180939140-38758206.png)
多态
多态的作用:解决继承带来的问题
我们先通过一段代码来了解一下多态的使用,首先我们要创建出main函数,一个父类(person),三个子类(Korea,Chinese,American)
完成效果图
![](https://images2015.cnblogs.com/blog/898538/201604/898538-20160410183110703-1566949929.png)
里面用到的override,与virtal关键字是多态里面的常用方法
virtal关键字修饰方法称为虚方法。虚方法语法如下
语法
访问修饰符 virtual 返回类型 方法名()
{
//方法体
}
override关键字来修饰的方法,称为方法的重写。虚方法可以被重写。
语法
访问修饰符 override 返回类型 方法名()
{
//方法名
}
首先我们了解一下继承的作用:移除类的冗余代码
下面是代码展示:
我们先建出一个main函数,一个父类(Exec)和两个子类(PM,CM)
public class Exec { public int Id { get; set; }//编号 public string Name { get; set; }//姓名 public int Age { get; set; }//年龄 public Exec()//无参构造 { } public Exec(int id,string name,int age)//有参构造 { this.Id = id; this.Name = name; this.Age = age; } public void say()//创建say()方法 { Console.WriteLine("我是父类的say方法,我是{0},我{1岁了}"); } }
public class CM:Exec { public CM() { } public CM(int id,string name,int age):base(id,name,age) //base(id,name,age)调用父类的带参构造 { } public void say() { Console.WriteLine("我是父类的say方法,我是{0},我{1}岁了", Name, Age); } }
public class PM:Exec { public PM() { } public PM(int id,string name,int age):base(id,name,age) { } public void say() { Console.WriteLine("我是父类的say方法,我是{0},我{1}岁了",Name,Age); } }
class Program { static void Main(string[] args) { PM pm = new PM(001,"经理",45);//创建一个经理对象 pm.say();//调用PM()子类的say()方法 CM cm = new CM(002,"员工",25);//创建一个员工对象 cm.say();//调用CM()子类的say()方法 Console.ReadKey();//让屏幕停留 } }
完成效果图
![](https://images2015.cnblogs.com/blog/898538/201604/898538-20160410183249937-778159444.png)
![](https://images2015.cnblogs.com/blog/898538/201604/898538-20160410180602109-1990488599.png)
![](https://images2015.cnblogs.com/blog/898538/201604/898538-20160410180647609-405772409.png)
![](https://images2015.cnblogs.com/blog/898538/201604/898538-20160410180844843-2044913086.png)
![](https://images2015.cnblogs.com/blog/898538/201604/898538-20160410180801000-1746535513.png)
![](https://images2015.cnblogs.com/blog/898538/201604/898538-20160410180939140-38758206.png)
多态
多态的作用:解决继承带来的问题
我们先通过一段代码来了解一下多态的使用,首先我们要创建出main函数,一个父类(person),三个子类(Korea,Chinese,American)
public class Person { public int age; public virtual void Hello() { } }
public class American:Person { public override void Hello() { Console.WriteLine("Hello"); } }
public class Chinese:Person { public override void Hello() { Console.WriteLine("你好"); } }
public class Korea:Person { public override void Hello() { base.age=12; Console.WriteLine("金喜善打招呼"); } }
class Program { static void Main(string[] args) { Chinese chinese=new Chinese(); American american=new American(); Korea korea=new Korea(); //多态的调用 Person[] pers= { chinese,american,korea }; foreach (Person item in pers)//循环遍历 { item.Hello(); } Console.ReadLine(); } }
完成效果图
![](https://images2015.cnblogs.com/blog/898538/201604/898538-20160410183110703-1566949929.png)
里面用到的override,与virtal关键字是多态里面的常用方法
virtal关键字修饰方法称为虚方法。虚方法语法如下
语法
访问修饰符 virtual 返回类型 方法名()
{
//方法体
}
override关键字来修饰的方法,称为方法的重写。虚方法可以被重写。
语法
访问修饰符 override 返回类型 方法名()
{
//方法名
}
相关文章推荐
- 树状数组(搬运自维基百科)
- 作业四
- Nutch
- FZU 2150 Fire Game
- DG
- PhoneGap极光推送插件使用
- 继承和多态的那些事
- poj 1419
- (水)POJ-1321 棋盘问题
- git入门
- android 读取Bitmap的几种方式
- microsoft office professional plus2007在安装过程中出错
- hadoop修改block size,并上传文件
- ggplot2 legend图例的修改
- 学习进度表第六周
- [Lintcode]Rotate String 两步翻转法
- C++: string的大小写转换
- 1.OSI(开放系统互连(Open System Interconnection))模型
- 团队视频
- HTML5 之 CSS简单使用(一)