找回密码
 立即注册
查看: 265|回复: 0

Unity面试题学习笔记(8)——C#核心

[复制链接]
发表于 2022-10-2 15:05 | 显示全部楼层 |阅读模式
1.里氏替换原则:


  • 基本概念,里氏替换原则是面向对象七大原则中最重要的原则。任何父类出现的地方,派生类都可以替代。
  • 表现,父类容器装派生类对象,因为派生类对象包含了父类所有内容
  • 作用,方便进行对象存储和管理。
  • 实现,
        //里氏替换原则,父类容器装载子类对象
        Test player = new Player();
        Test monster = new Monster();
        Test boss = new BOSS();

        List<Test> m_list = new List<Test>() { new Player(), new Monster(), new BOSS() };

        //由于容器目前是父类的,所以不能直接通过该父类容器来使用子类对象中的方法

  • is和as,is判断一个对象是否是指定类对象,返回值bool;as将对象转换为指定类的对象,返回值为指定类,成功返回指定类对象,失败返回空(null)。
//is
        //用于判断某个对象是不是指定类的对象
        if(player is Player)
        {
            
        }
//as
        //将一个对象转换为指定类的对象(注意不能用它本身来存储as后的结果)
        Player p = player as Player;
        
        //配合使用
        if(player is Player)
        {
            //Player p2 = player as Player;
            //p2.Attack();

            (player as Player).Attack();
        }
        //遍历判断
        foreach(Test temp in m_list)
        {
            if(temp is Player)
            {
                (temp as Player).Attack();
            }
            else if(temp is Monster)
            {
                (temp as Monster).MonsterAttack();
            }
            else if(temp is BOSS)
            {
                (temp as BOSS).BossAttack();
            }
        }

  • 注意,不能用子类容器装父类对象,否则会出错。
(to be continued ... )
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 10:34 , Processed in 0.087686 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表