Unity面试题学习笔记(8)——C#核心
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 ... )
页:
[1]