里氏替换和多态使用
1、里氏替换概述
1> 概念:
>继承必须确保基类所拥有的性质在子类中仍然成立
>子类可以替换父类并且出现在父类能够出现的任何地方,且程序的行为不会发生变化,但是反过来,父类对象是不能替换
子类对象的
2> 里氏替换的应用
对于违反里氏原则的情况,我们需要把原来的两层类扩充为三层类,增加一个中间层把不成立的属性移到这个类中
3> is和as操作符的使用
>is操作符用于检查对象和指定的类型是否兼容
>实例:
if(empls[i] is SE)
{
//...
}
>as操作符主要用于两个对象之间的类型转换
>实例:
if(empls[i] is SE)
{
SE se=empls[i] as SE;
}
>as关键字也可以用强制类型转换来替代,不同是强制转换如果不成功会报告异常,而as关键字如果转换失败会
返回null,不会产生异常
2、父类类型作为参数
1> 概述:
>当父类类型作为参数时,我们可以将子类作为参数传入
>多态的第四种体现,在其中传入的是子类对象,这就是消息传递的多态
2> 实例:
//父类
public class FuLei
{
public virtual string ShowInfo();
}
//子类1
class ZiLei_1:FuLei
{
public override string ShowInfo()
{
return "我是子类_1";
}
}
//子类2
class ZiLei_2:FuLei
{
public override string ShowInfo()
{
return "我是子类_2";
}
}
//form里面
public void show(FuLei fl)
{
MessageBox.Show(fl.ShowInfo());
}
private void button1_Click(object sender, EventArgs e)
{
show(new ZiLei_1());
}
private void button2_Click(object sender, EventArgs e)
{
show(new ZiLei_2());
}
|