当前位置: 首页 > article >正文

c#中多态的实例应用说明

在C#中,多态性是通过继承和实现接口来实现的,允许编写可以使用基类型的代码,然后使用派生类型的特定行为。

一.实例界面显示

 二.源码界面显示

       //定义的基类
        abstract class Shape
        {
            public abstract int Area();//基类中的抽象方法
        }
        //定义矩形的派生类
        class Rectangle : Shape
        {
            private int length;
            private int width;
            public Rectangle(int a = 0, int b = 0)//构造函数
            {
                length = a;
                width = b;
            }
            public override int Area()//重写基类中的抽象方法
            {
                //返回矩形的面积
                return (width * length);
            }
        }
        //定义三角形的派生类
        class Triangle : Shape
        {
            private int baseLine;
            private int height;
            public Triangle(int a = 0, int b = 0)//构造函数
            {
                baseLine = a;
                height = b;
            }
            public override int Area()//重写基类中的抽象方法
            {
                //返回三角形的面积
                return (baseLine * height / 2);
            }
        }


            private void MyTest()//定义方法
            {
                Rectangle r = new Rectangle(10, 7);//创建矩形对象
                double a = r.Area();//计算矩形的面积
                Triangle t = new Triangle(10, 7);//创建三角形对象
                double b = t.Area();//计算三角形的面积
                MessageBox.Show("长方形面积::" + a + "三角形面积:" + b);
            }

        private void button4_Click(object sender, EventArgs e)
        {
            MyTest();//调用方法
        }

三.总结

在这个例子中,Shape 是一个基类,Rectangle 和 Triangle 是从Shape中 派生的子类。Area 方法在 Shape 类中被定义为虚拟方法,然后在 Rectangle 和  Triangle 类中被重写。在 MyTest 方法中,我们可以使用基类 Shape的引用来引用派生类 Rectangle 或  Triangle的实例,并调用 Area 方法,这样就实现了多态性。


http://www.kler.cn/news/342524.html

相关文章:

  • PHP智慧餐饮新风尚点餐系统
  • vscode 中显示 pnpm : 无法加载文件 C:\Users\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本
  • pytorch导入数据集
  • Python快速编程小案例——打印蚂蚁森林植树证书
  • YOLOv11训练自己数据集_笔记1
  • ReactRouter快速梳理
  • 【linux 多进程并发】0201 Linux进程fork内存空间,父子进程变量内存地址居然是一样的
  • 潜水打捞系统助力,破解汽车打捞难题
  • 2-118 基于matlab的六面体建模和掉落仿真
  • 继承--C++
  • Spring Boot洗衣店订单系统:智能库存管理
  • QT调用最新的libusb库
  • RelationGraph实现工单进度图——js技能提升
  • 使用 C# 构建强大的网络爬虫:从基础到高级功能实现
  • 【教学类-36-10】20241010职业抽卡(midjounery-niji)(涂色、裁剪、游戏)
  • 【VUE】Vue的diff算法和React的diff算法
  • Biomamba求职| 国奖+4篇一作SCI
  • 高并发系统如何保证数据一致性
  • Python自然语言处理之snownlp模块介绍、安装与常见操作案例
  • window.location.href和open的区别