(4)在学生类中重写虚拟方法ToString():
public override string ToString()

return xm;
}
(操作步骤见第八讲的项目八)
(5)在主窗体中添加一个自定义方法void FillList():
public void FillList()
{
listBox1.Items.Clear();                             //清除列表框这里的重写虚拟方法是怎么一回事?
怎么弄?怎么添加一个自定义方法?

解决方案 »

  1.   

    public void FillList()改成 public virtual void FillList()
      

  2.   

    问题下面不就是答案么...问题 (4)在学生类中重写虚拟方法ToString():
    答案public override string ToString()

    return xm;
    }
    (操作步骤见第八讲的项目八)
    问题 (5)在主窗体中添加一个自定义方法void FillList():
    答案 public void FillList()
    {
    listBox1.Items.Clear(); //清除列表框
      

  3.   

    public override string ToString()public virtual void FillList()
      

  4.   

    我们的国粹‘京剧’以前都是子承父业,代代相传的艺术。假设有这样一对父子,父亲是个非常有名的京剧艺术家,儿子长大成人,模仿父亲唱戏也惟妙惟肖,就是儿子从父亲处继承了唱戏这个方法,但是儿子经过多年的学习,其实已经有了自己的创作自己的绝活,所以儿子对这个唱戏方法做了自己的加工修改,有了自己的实现形式(就是重写那),虚方法就是他爸李刚把唱戏(尤其是哭戏)的方法用virtual指定为虚方法,这样启明才可以重写,否则不可以哟
      

  5.   

    现在又三种动物:鱼,鸟,猫。我们描述三种动物的运动方法runing()
    分别对应:
    鱼—》runing(){游泳}
    鸟-》runing(){飞翔}
    猫-》runing(){跑}
    三个方法的实现是不一样的,但我们可能需要在某个功能内调用这三个方法中的一个或者多个。
    所以我提取一个父类
    animal,在animal中定义一个抽象方法 abstract runing()(没有实现的方法)
    然后再三个动物类中实现 override runing(){实现}
    从一个没有实现的方法通过override到三个动物的实现就是重写。怎样能让我们用一个animal对象调用
    三个不同实现的方法runing--也就是多态。
    为什么还要虚方法。
    如果我们增加动物,添加老虎,狗,狮子。会发现我们添加的这三个动物的runing实现和猫的一样。
    我们有没必要再重写三次呢?没有必要,这时我们将猫的runing实现方法放到animal中,将abstract改成
    virtual,去掉猫中的实现方法,鱼和鸟中的还是不变。
    这样简化了我们的代码,而实现的功能并没因为三种动物的添加而该表。
    这就是重写虚方法
      

  6.   

    虚方法,virtual,你当前类所用的.ToString()方法,是继承于基类的ToString()方法,重写就是在你本类中public override string tostring()
    {
       console.writeline("abc");
    }
    当你在本类中应用ToString(),方法时,就会输出abc,而不是你本类继承基类中的那个ToString()方法了。
      

  7.   

    如果原始的TOSTRING你了解后,但又觉得不够用,可以自己再写一个同样的TOSTRING,就把以前的覆盖掉了
      

  8.   

    引用 9 楼 hustliangchen 的回复:
    我们的国粹‘京剧’以前都是子承父业,代代相传的艺术。假设有这样一对父子,父亲是个非常有名的京剧艺术家,儿子长大成人,模仿父亲唱戏也惟妙惟肖,就是儿子从父亲处继承了唱戏这个方法,但是儿子经过多年的学习,其实已经有了自己的创作自己的绝活,所以儿子对这个唱戏方法做了自己的加工修改,有了自己的实现形式(就是重写那),虚方法就是他爸李刚把唱戏(尤其是哭戏)的方法用virtual指定为虚方法,这样启明才可以重……
    非常有创意的解说~~~
    顶下~~~
      

  9.   


    这是一种极端错误的对继承的理解,这样做会你就会彻底乱用面向对象技术,从而让你的系统设计编程诡异、理论与现实彻底脱节,将来会混乱不堪、争论不休、后悔不已。所谓继承,是指例如“白马也是马”、“住院病人1234也就是病人1234”这类,它们是指同一个对象可以有多种类型,而这些类型我们可以通过声明其继承来简化对其行为的。那种把子承父业当作继承的,是典型地胡乱继承。一个人不可能是自己的父亲或者自己的儿子,而儿子继承父亲的财产或者技能跟面向对象系统分析设计(OOAD)的继承根本扯不上关系。
      

  10.   

    比如:    哺乳动物 x=new 鸭嘴兽();这是继承的应用。可以仔细想想到底什么才是继承。此时,变量x所指的对象,你可以说它是鸭嘴兽,也可以说它是哺乳动物,也可以说它是鸟,但是总之它就是它自己,它不会因为贴的标签不同而变成另外一个对象,它不会幻化为两个动物(哪怕这两个动物具有父子关系)。
    如果你只是因为两个对象有相似的地方就滥用继承,那么还是在开发时加上十万分的小心为好。如果随便附会生活中的“父子”关系就用到继承身上了,则更是直接就画蛇添足了。
      

  11.   

    虚方法不能直接使用,只能在子类中用override方式重载下,才能使用......