里式转化:
1>子类可以赋值给父类;如果一个地方需要父类作为参数,可以找一个子类对象代替
2>如果父类中装的是子类对象,那么这个父类可以强转化成子类对象
//Person p=new Student();
//Student ss=(Student)p;
//
//is的用法:
//if(p is Student)
{
//Student ss = (Student)p;
//ss.StudentSayHello();
}
//as 的用法:
//Student t=p as Student;
//if (s != null)
//{
//t.StudentSayHello();
// }
应用实例:
结果:
代码如下:
//子类均继承父类,所以可以创建一个父类数组,可以放所有子类的对象
Person[] prs = new Person[10];
//产生随机10个数,对于数字不同用不同的子类函数
Random r = new Random();
for (int i = 0; i < prs.Length; i++)
{
int n = r.Next(1, 5);
//next(MinValue,MaxValue);返回指定范围的随机数
switch (n)
{
case 1: prs[i] = new Student();//子类对象赋值给父类
break;
case 2: prs[i] = new Teacher();
break;
case 3: prs[i] = new Meinv();
break;
case 4: prs[i] = new Person();
break;
}
}
//prs中存放10个对象(子类,父类)
for (int i = 0; i < prs.Length; i++)
{
if (prs[i] is Meinv)//第二点,父类中有子类的对象
{
Meinv mn = (Meinv)prs[i];
mn.MeinvSayHi();
}
else if (prs[i] is Student)
{
Student s = (Student)prs[i];
s.StudentSayHi();
}
else if (prs[i] is Teacher)
{
Teacher t = (Teacher)prs[i];
t.TearcherSayHi();
}
else
{
prs[i].PersonSayHi();
}
}
Console.ReadKey();
}
}