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

(大三上_游戏开发设计模式_上课_1)多态练习_计算机

灵活性,可扩展,灵活性,可维护

封装

继承:要有基类

代码片段

写整个属性

        基类里面  基态
            基方向,虚方法

//虚方法,可以写在实例方法里
 

public virtual double GetResult() 
{
    return 0;
}

实例方法,可以创建实例

抽象方法,要写在抽象类里
 

 public abstract double GetResult();

抽象类,不能创建实例

abstract class Prgram

namespace 多态练习_计算机
{
    /// <summary>
    /// 运算类,抽象类
    /// </summary>
    internal abstract class Prgram
    {
      static void Main(string[] args)
        {
            Console.Write("请输入数字A:");
            string strNumberA = Console.ReadLine();

            Console.Write("请选择运算符号(+、-、*、/):");
            string strOperate = Console.ReadLine();

             Console.Write("请输入数字B:");
           string  strNumberB = Console.ReadLine();

            string strResult = "";
            Opration opration=null;//基类的引用
         
           switch (strOperate)
            {
                case "+":
                    //基类的引用指向子类的对象-多态
                    opration = new AddOperation();
                  
                break;
                case "-":
                    //基类的引用指向子类的对象-多态
                   opration = new SubOperation();
                  
                    break;
            }
            //多态结果
            strResult = opration.GetResult().ToString();
        }
    }
}

基类

namespace 多态练习_计算机
{
    /// <summary>
    /// 运算类,抽象类
    /// </summary>
    internal abstract class Opration
    {
        private double _strNumberA;
        private double _strNumberB;


        public double StrNumberA
        {
            get { return _strNumberA; }
            set
            {
                if (value != 0)
                    _strNumberA = value;
                else
                    Console.WriteLine("因子不能为0");
            }
        }
        public double StrNumberB
        {
            get { return _strNumberB; }
            set
            {
                if (value != 0)
                    _strNumberB = value;
            }
        }
        //获取运算结果的方法
        //抽象方法,要写在抽象类里
        public abstract double GetResult();

    }
}

add

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 多态练习_计算机
{
    internal class AddOperation : Opration
    {
        public override double GetResult()
        {
            return StrNumberA + StrNumberB;
        }
    }
}

mul

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 多态练习_计算机
{
    internal class MulOperation:Opration
    {
        public override double GetResult()
        {
            return StrNumberA * StrNumberB;
        }
    }
}

sub

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 多态练习_计算机
{
    internal class SubOperation:Opration
    {
        public override double GetResult()
        {
            return StrNumberA -StrNumberB;
        }
    }
}

div

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 多态练习_计算机
{
    internal class DivOperation: Opration
    {
        public override double GetResult()
        {
            return StrNumberA / StrNumberB;
        }
    }
}


http://www.kler.cn/a/288316.html

相关文章:

  • 驱动开发系列13 - Linux tasklet用法介绍
  • 【vue3中el-table表格高度自适应】
  • 有了Makefile, CMake存在的意义是什么?如何借助Makefile构建ObjC语言编译环境?如何获取编译器的版本号?
  • 通过MongoDB Atlas 实现语义搜索与 RAG——迈向AI的搜索机制
  • Python Plotly 库使用教程
  • 必修 -- 常用笔试题
  • CUDA编程08 - 并行编程思维
  • 【React 简化路由的生成的方式
  • kafka3.7.1 单节点 KRaft部署测试发送和接收消息
  • 深入解析FPGA在SOC设计中的核心作用
  • 深入探讨Java中的分布式事务管理:实现、挑战与最佳实践
  • 超声波的应用
  • 【python计算机视觉编程——4.照相机模型与增强现实】
  • sqlite3的db.wait方法:等待所有查询完成
  • PyQt6 / PySide 6 实现可拖拽的多标签页 web 浏览器【1】(有 Bug)
  • Ansible 自动化运维项目
  • 如何在Mac上使用VMware配置Windows虚拟机
  • C#绘制常用工业控件(仪表盘,流动条,开关等)
  • 浅谈分库分表的“读扩散”问题
  • 第二十章 rust多平台编译
  • 博客自建(带避坑指南)4:hexo文章页设置和动画魔改设置
  • 数据防泄密知识集锦丨八个实用数据防泄密软件,你知道吗?
  • TikTok直播限流与网络有关系吗?怎么解决?
  • 【Apache Doris】数据均衡问题排查指南
  • 解锁 Redis:探索连接策略、数据编码与性能秘诀
  • Vue3项目开发——新闻发布管理系统(五)