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

C#-里氏替换原则

概念:任何父类出现的地方,子类都可以替代

语法表现:父类容器装子类对象 ,因为子类对象包含了父类的所有内容

作用:方便进行对象的存储和管理

is & as
  1. is:判断一个对象是否是指定类对象。返回bool → 是为真,不是为假

  2. as:将一个对象转换为指定类对象。返回值指定类型对象 → 成功返回指定类型对象,失败返回null

注意:不能用子类容器装父类对象

  class GameObject{}class Player:GameObject{public void PlayerAtk(){Console.WriteLine("玩家攻击");}}class Monster:GameObject{public void MonsterAtk(){Console.WriteLine("怪物攻击");}}class Boss:GameObject{public void BossAtk(){Console.WriteLine("Boss攻击");}}class Program{static void Main(string[] args){Console.WriteLine("里氏替换原则");//里氏替换原则 用父类容器 装载子类对象GameObject player = new Player();GameObject monster = new Monster();GameObject boss = new Boss();if( player is Player ){//Player p = player as Player;//转换失败,p中存储的就是null//p.PlayerAtk();(player as Player).PlayerAtk();}GameObject[] objects = new GameObject[] { new Player(), new Monster(), new Boss() };for (int i = 0; i < objects.Length; i++){if( objects[i] is Player ){(objects[i] as Player).PlayerAtk();}else if( objects[i] is Monster ){(objects[i] as Monster).MonsterAtk();}else if (objects[i] is Boss){(objects[i] as Boss).BossAtk();}}}}
}


http://www.mrgr.cn/news/68816.html

相关文章:

  • Docker如何以配置文件方式安装nginx
  • Java 开发中的 9 个异常处理的避坑技巧:实战案例解析
  • 又发现了Mac妙控鼠标的新使用方法
  • 高边坡安全监测系统的工作原理和应用领域
  • 十款外贸软件盘点,专注企业订单业务管理
  • 风华高科签约实在RPA,引领粤港澳大湾区制造业数字化腾飞
  • 2.Python解释器
  • 抗辐照CANFD芯片工艺解析:如何保障芯片的可靠性
  • Python操作Excel
  • 1.python介绍、安装
  • _处理匿名命名空间里的变量时进入硬件中断错误
  • Scaffold-ETH 2:颠覆传统开发的区块链神器,快速构建你的去中心化应用!
  • 基于毫米波雷达和TinyML的车内检测、定位与分类
  • Excel快捷键大全
  • LeetCode 二分算法 范围内整数的最大得分
  • JavaScript 网页设计详解教程
  • Liunx:文件fd、重定向、管道
  • UE4.27打包为Html5
  • 我谈维纳(Wiener)去噪滤波器
  • ReactPress:构建高效、灵活、可扩展的开源发布平台
  • C++11新特性
  • MySQL基础(四)
  • 复杂度的讲解
  • 五分钟使用 CocosCreator 快速部署 TON 游戏:开发基于 ZKP 的游戏
  • 【java】哈希<两数之和> 理解哈希
  • 常见二极管结构及其应用详解