posted at 2017.5.21 21:04 by 风信子
可以将一种类型的对象赋给层次结构中较高位置的一个类变量。例如:
Class Mammal
{public void Bteathe();}
Class Horse : Mammal
{ public void Trot();}
Class Whale:Mammal
{public void Swim();}
Horse myHorse = new Horse(“Neddy”);
Mammal myMammal = myHorse;
但要注意,这样做有一个重大的限制:
Horse myHorse = new Horse(“Neddy”);
Mammal myMammal = myHorse;
myMammal.Breathe(); //这个调用是合法的,Breathe是Mammal类的一部分
myMammal.Trot(); //这个调用是非法的,Trot不是Mammal类的一部分。
但是,反方向的转换是不允许的。例如:
Mammal myMammal = myMammal(“Mammalia”);
Horse myHorse = myMammal; //错误
除非先进行检查,这个检查使用as或is操作符,或者通过一次强制类型转换来进行。例如:
Horse myHore = new Horse(“Neddy”);
Mammal myMammal = myHorse;
…
Horse myHorseAgain = myMammal as Horse; //OK –myMammal确实是一个Horse
..
Whale myWhale = new Whale(“Moby Dick”);
myMammal = myWhale;
..
myHorseAgain = myMammal as Horse; //会返回null –myMammal不是Horse而是Whale
85741ac4-318d-4e3b-b525-5d620dfa6929|0|.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04
Tags: 类
IT技术