【C#】类_里氏替换原则

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

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

作用:便于对象的存储和管理。

关键词:is和as

is:用于判断对象是否为某一指定类对象,是返回true,否返回false;

as:用于转换对象到指定类对象,转换成功返回转换后的对象,转换失败返回null。

语法

类对象 is 类名 返回true或false

类对象 as 类名 放回指定类型对象或null

实例

namespace L13_里氏替换原则
{
    //class gameobject { }
    //class player : gameobject
    //{
    //    public void playeratk() { console.writeline("player攻击"); }
    //}
    //class monster : gameobject { }
    //class boss : gameobject { }

    //练习题一
    //写一个Monster类,它派生出Boss和Goblin两个类,Boss有技能;
    //小怪有攻击;随机生成10个怪,装载到数组中 ,遍历这个数组,调用他们的攻击方法,如果是boss就释放技能。
    class Monster
    {

    }

    class Boss : Monster
    {
        public void Skill()
        {
            Console.WriteLine("释放技能!!");
        }
    }

    class Goblin : Monster
    {
        public void Attack()
        {
            Console.WriteLine("攻击!!");
        }
    }
   
    internal class Program
    {
        static void Main(string[] args)
        {
            //GameObject player = new Player();
            //GameObject monster = new Monster();
            //GameObject boss = new Boss();
            用数组存储对象
            //GameObject[] gameObject4 = new GameObject[] { new Player(), new Monster(), new Boss() };
            用if判断player是否为Player类型,如果是的话,将player转化为Player类型的对象使用其里面的方法。
            //if (player is Player)
            //{
            //    Player p = player as Player;
            //    p.PlayerAtk();
            //}

            Monster[] m = new Monster[] { new Boss(),new Goblin(), new Goblin(), new Goblin(), 
                                          new Goblin(), new Goblin(), new Boss(), new Boss(), new Boss(), new Boss()};
            for (int i = 0; i < m.Length; i++)
            {
                if(m[i] is Boss) 
                { 
                    Boss boss = m[i] as Boss;
                    boss.Skill();
                }
                if (m[i] is Goblin)
                {
                    Goblin goblin = m[i] as Goblin;
                    goblin.Attack();
                }
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值