(4)在学生类中重写虚拟方法ToString():
public override string ToString()
{
return xm;
}
(操作步骤见第八讲的项目八)
(5)在主窗体中添加一个自定义方法void FillList():
public void FillList()
{
listBox1.Items.Clear(); //清除列表框这里的重写虚拟方法是怎么一回事?
怎么弄?怎么添加一个自定义方法?
public override string ToString()
{
return xm;
}
(操作步骤见第八讲的项目八)
(5)在主窗体中添加一个自定义方法void FillList():
public void FillList()
{
listBox1.Items.Clear(); //清除列表框这里的重写虚拟方法是怎么一回事?
怎么弄?怎么添加一个自定义方法?
答案public override string ToString()
{
return xm;
}
(操作步骤见第八讲的项目八)
问题 (5)在主窗体中添加一个自定义方法void FillList():
答案 public void FillList()
{
listBox1.Items.Clear(); //清除列表框
分别对应:
鱼—》runing(){游泳}
鸟-》runing(){飞翔}
猫-》runing(){跑}
三个方法的实现是不一样的,但我们可能需要在某个功能内调用这三个方法中的一个或者多个。
所以我提取一个父类
animal,在animal中定义一个抽象方法 abstract runing()(没有实现的方法)
然后再三个动物类中实现 override runing(){实现}
从一个没有实现的方法通过override到三个动物的实现就是重写。怎样能让我们用一个animal对象调用
三个不同实现的方法runing--也就是多态。
为什么还要虚方法。
如果我们增加动物,添加老虎,狗,狮子。会发现我们添加的这三个动物的runing实现和猫的一样。
我们有没必要再重写三次呢?没有必要,这时我们将猫的runing实现方法放到animal中,将abstract改成
virtual,去掉猫中的实现方法,鱼和鸟中的还是不变。
这样简化了我们的代码,而实现的功能并没因为三种动物的添加而该表。
这就是重写虚方法
{
console.writeline("abc");
}
当你在本类中应用ToString(),方法时,就会输出abc,而不是你本类继承基类中的那个ToString()方法了。
我们的国粹‘京剧’以前都是子承父业,代代相传的艺术。假设有这样一对父子,父亲是个非常有名的京剧艺术家,儿子长大成人,模仿父亲唱戏也惟妙惟肖,就是儿子从父亲处继承了唱戏这个方法,但是儿子经过多年的学习,其实已经有了自己的创作自己的绝活,所以儿子对这个唱戏方法做了自己的加工修改,有了自己的实现形式(就是重写那),虚方法就是他爸李刚把唱戏(尤其是哭戏)的方法用virtual指定为虚方法,这样启明才可以重……
非常有创意的解说~~~
顶下~~~
这是一种极端错误的对继承的理解,这样做会你就会彻底乱用面向对象技术,从而让你的系统设计编程诡异、理论与现实彻底脱节,将来会混乱不堪、争论不休、后悔不已。所谓继承,是指例如“白马也是马”、“住院病人1234也就是病人1234”这类,它们是指同一个对象可以有多种类型,而这些类型我们可以通过声明其继承来简化对其行为的。那种把子承父业当作继承的,是典型地胡乱继承。一个人不可能是自己的父亲或者自己的儿子,而儿子继承父亲的财产或者技能跟面向对象系统分析设计(OOAD)的继承根本扯不上关系。
如果你只是因为两个对象有相似的地方就滥用继承,那么还是在开发时加上十万分的小心为好。如果随便附会生活中的“父子”关系就用到继承身上了,则更是直接就画蛇添足了。