1、子类可以赋值给父类。
2、如果这个父类中装的是子类对象,可以把这个父类强转为子类。
通俗的说:就是父类new出子类的对象,调用子类的方法! (程序的扩展性)
实例来理解:新建一个控制台程序。t为父类。t1、t2、t3是子类。
如下三个子类分别继承t的父类
public class t
{
public void tH()
{
Console.WriteLine("t");
}
}
public class t1:t
{
public void t1H()
{
Console.WriteLine("t1");
}
}
public class t2:t
{
public void t2H()
{
Console.WriteLine("t2");
}
}
public class t3:t
{
public void t3H()
{
Console.WriteLine("t3");
}
}
创建一个父类为10的数组,随机填充子类。
static void Main(string[] args)
{
t[] p = new t[10];
Random r=new Random();
for (int i = 0; i < p.Length; i++)
{
int rs = r.Next(1, 4);
switch (rs)
{
case 1:
p[i] = new t1(); //随机赋值子类
break;
case 2:
p[i] = new t2();
break;
case 3:
p[i] = new t3();
break;
default:
break;
}
}
for (int i = 0; i < p.Length; i++)
{
if (p[i] is t1) //如果可以转换
{
((t1)p[i]).t1H(); //里氏转换
}
if (p[i] is t2)
{
((t2)p[i]).t2H();
}
if (p[i] is t3)
{
((t3)p[i]).t3H();
}
}
for (int i = 0; i < p.Length; i++) //输出结果
{
Console.WriteLine(p[i]);
}
Console.ReadKey();
}