C#多态浅析
在 C# 语言中多态称为运行时多态,也就是在程序运行时自动让父类的实例调用子类中重写的 方法,它并不是在程序编译阶段完成的。
使用继承实现多态,实际上是指子类在继承父类后,重写了父类的虚方法或抽象方法。
在创建父类的对象指向每一个子类的时候,根据调用的不同子类中重写的方法产生了不同的执行效果。
总而言之,使用继承实现多态必须满足以下两个条件。
【实例】根据不同层次(本科生、研究生)的学生打印出不同的专业要求。
根据题目要求,创建专业信息的抽象类 (Major),并在其中定义学号 (Id)、姓名 (Name),以及打印专业要求的抽象方法 (Requirenwnt)。
分别使用本科生和研究生类继承专业信息类,并重写其中的打印专业要求的方法。实现的代码如下。
从上面的执行效果可以看出,创建父类的实例指向了不同的子类,在程序运行时会自动调用子类中重写后的方法内容,显示出本科生和研究生的要求信息。
使用继承实现多态,实际上是指子类在继承父类后,重写了父类的虚方法或抽象方法。
在创建父类的对象指向每一个子类的时候,根据调用的不同子类中重写的方法产生了不同的执行效果。
总而言之,使用继承实现多态必须满足以下两个条件。
- 子类在继承父类时必须有重写的父类的方法。
- 在调用重写的方法时,必须创建父类的对象指向子类(即子类转换成父类)。
【实例】根据不同层次(本科生、研究生)的学生打印出不同的专业要求。
根据题目要求,创建专业信息的抽象类 (Major),并在其中定义学号 (Id)、姓名 (Name),以及打印专业要求的抽象方法 (Requirenwnt)。
分别使用本科生和研究生类继承专业信息类,并重写其中的打印专业要求的方法。实现的代码如下。
class Program { static void Main(string[] args) { Major major1 = new Undergraduate(); major1.Id = 1; major1.Name = "张晓"; Console.WriteLine("本科生信息:"); Console.WriteLine("学号:" + major1.Id + "姓名:" + major1.Name); major1.Requirement(); Major major2 = new Graduate(); major2.Id = 2; major2.Name = "李明"; Console.WriteLine("研究生信息:"); Console.WriteLine("学号:" + major2.Id + "姓名:" + major2.Name); major2.Requirement(); } } abstract class Major { public int Id { get; set; } public string Name { get; set; } public abstract void Requirement(); } class Undergraduate :Major { public override void Requirement() { Console.WriteLine("本科生学制4年,必须修满48学分"); } } class Graduate : Major { public override void Requirement() { Console.WriteLine("研究生学制3年,必须修满32学分"); } }执行上面的代码,效果如下图所示。
从上面的执行效果可以看出,创建父类的实例指向了不同的子类,在程序运行时会自动调用子类中重写后的方法内容,显示出本科生和研究生的要求信息。
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频