c# 用父类去实例化子类的意义

来源:百度知道 编辑:UC知道 时间:2024/06/03 01:07:14
最近在琢磨c#的时候,经常发现类似这样的例子:
public class people
{
//代码略
}
public class man : people
{
//代码略
}
public class Apply
{
people Person=new man();
...
}
我想问一下,在实际的编程中,会有这样的需要吗?请有经验的人说说看.

有这样的需要的,比如People类有一个Run方法,Man和Woman这两个类都是继承自People的类,并且都重写(override)了Run这个方法(男人女人跑起步来不一样).
现在有一群人一起跑步,有男人有女人.
我们可以把这些都装进一个People数组(假设为peoples).
然后
foreach(People p in peoples)
{
p.Run();
}

由于多态性,在调用p.Run()的时候p对象本身如果是男人就会自动调用男人的Run方法,是女人就会调用女人的Run方法.
还有许多地方需要用到多态性的,建议你记住,以后遇到了自然就想通了.

这是c#的动态绑定技术(多态性),如果你的people类定义了一个方法,man类中重写(override)了父类的一个方法,那么在people Person=new man()这句话之后,person就是man类的实例,它就会调用man类下面的方法。

class jk
{int a=1;
public void fun1()
{
System.out.println("父类funl()") ;
}
public void fun2()
{
System.out.println("父类fun2()") ;
}
} // Student类扩展自jk类,也就继承了jk类中的fun1()、fun2()方法 class Student2 extends jk
{int a=4;
char c=45;
// 在这里复写了jk类中的fun1()方法
public void fun1()
{
System.out.println("子类fun1()") ;
}
public void fun3()
{
System.out.println("子类新方法fun3()") ; }
} public class