C#接口中多态的实现
C#接口中多态的实现
使用接口实现多态 需要满足以下两个条件。
假设接口名称为 ITest,分别定义两个实现类来实现接口的成员,示例代码如下。 C# Code: interface ITest { void methodA(); } class Test1 : ITest { public void methodA() { Console.WriteLine("Test1 类中的 methodA 方法"); } } class Test2 : ITest { public void methodA() { Console.WriteLine("Test2 类中的 methodA 方法"); } } //来源:C/S框架网 | www.csframework.com | QQ:23404761 使用多态的方式调用实现类中的方法,Main 方法中的代码如下。 C# Code: class Program { static void Main(string[] args) { ITest test1 = new Test1(); //创建接口的实例test1指向实现类Test1的对象 test1.methodA(); ITest test2 = new Test2(); //创建接口的实例test2指向实现类Test2的对象 test2.methodA(); } } //来源:C/S框架网 | www.csframework.com | QQ:23404761 从上面的执行效果可以看出,使用不同类实现同一接口的方法输出的内容各不相同,这就是使用接口的方式实现多态的方法。 【实例】创建绘制图形的接口,分别使用两个类来实现接口绘制不同的图形。 根据题目要求,在绘制图形的接口中包括图形面积、坐标、颜色属性,并编写一个方法输出图形的描述,即属性值。接口定义的代码如下。 C# Code: interface IShape { double Area { get; } double X { get; set; } double Y { get; set; } string Color { get; set; } void Draw(); } //来源:C/S框架网 | www.csframework.com | QQ:23404761 下面分别使用矩形类 (Rectangle) 和圆类 (Circle) 实现该接口,并实现接口中的所有成员,代码如下。 C# Code: class Rectangle :IShape { //为矩形的长和宽赋值 public Rectangle(double length,double width) { this.Length = length; this.Width = width; } public double Length { get; set; }//定义长方形的长度 public double Width { get; set; }//定义长方形的宽度 public double Area { get { return Length * Width;//计算长方形面积 } } public string Color { get; set; } public double X { get; set; } public double Y { get; set; } public void Draw() { Console.WriteLine("绘制图形如下:"); Console.WriteLine("在坐标 {0},{1} 的位置绘制面积为 {2} 颜色为 {3} 的矩形", X, Y, Area, Color); } } class Circle : IShape { //为圆的半径赋值 public Circle(double radius) { this.Radius = radius; } public double Radius { get; set; } public double Area { get { return Radius * Radius * 3.14; } } public string Color { get; set; } public double X { get; set; } public double Y { get; set; } public void Draw() { Console.WriteLine("绘制图形如下:"); Console.WriteLine("在坐标为 {0},{1} 的位置绘制面积为 {2} 颜色为 {3} 的圆形", X, Y, Area, Color); } } //来源:C/S框架网 | www.csframework.com | QQ:23404761 在 Main 方法中分别调用实现类中的属性和方法,代码如下。 C# Code: class Program { static void Main(string[] args) { IShape shape1 = new Rectangle(10, 20); shape1.X = 100; shape1.Y = 200; shape1.Color = "红色"; shape1.Draw(); IShape shape2 = new Circle(10); shape2.X = 300; shape2.Y = 500; shape2.Color = "蓝色"; shape2.Draw(); } } //来源:C/S框架网 | www.csframework.com | QQ:23404761 执行上面的代码,效果如下图所示。 如果不使用构造方法为实现类中新增加的属性赋值,则需要先创建实现类的实例,并对其新增加的属性赋值,再将实现类的实例赋给接口的实例。 与 "IShape shapel = newRectangle( 10,20);" 等效的代码如下。 C# Code: 为了简化代码,在接口的实现类中定义了新的属性,通常是通过实现类的构造方法为属性赋值的。Reatangle rectangle = new Rectangle(); rectangle.Length = 10; rectangle.Width = 20; IShape shape1 = rectangle; //来源:C/S框架网 | www.csframework.com | QQ:23404761
参考文档:
[原创]C#植入友商网在线服务并实现同步用户注册接口(一) C#植入友商网在线服务并实现同步用户注册接口实现 [原创]C#植入友商网在线服务并实现同步用户注册接口(三) C# Winform项目多语言实现(支持简/繁/英三种语言) C#仿QQ聊天程序v1.0(IConnectionList接口实现) 详述IComparer,IComparable接口,实现自定义方法比较对象大小并排序(C#) WebApi接口使用HttpGet方式实现接受实体类参数(原创) CSFramework.WebApi时钟定时作业异步处理程序(IThreadHandler接口)实现 【原创】C# 深度拷贝对象 使用.NET反射+递归原理实现深度克隆 C# 实现对象浅拷贝Copy(极速复制对象) C# interface:定义接口 C#实现接口的两种方式:显示实现和隐式实现接口 C#ResultMonitor类,在TextBox组件显示操作接口 Web端使用VUE调用WebApi接口实现用户登录及采用Token方式数据交互 C# Winform 使用SUM CASE WHEN实现动态列交叉数据报表
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |