新人求助:C# 重写Override的作用是什么?为什么要重写呢,直接新建方法不是一样吗?

2025年03月01日 17:41
有5个网友回答
网友(1):

你对继承和多态的好处不了解。
比如说,如果你想实现人吃饭,人作为父类,有吃()这个行为。小孩作为人的一个子类,重写吃方法,不光有咀嚼和下咽的动作,还要求东西是甜的。
这时,有一个人贩子贩卖人口了,套上麻袋就走。麻袋里的人作为一个参数,被人贩子带走,人贩子要负责这个人的吃方法。但是拐卖前,他是不知道这个人是什么样的,他还是要准备调用这个人的吃()方法。
这样,如果拐卖了普通人
Person person=new Person();
那么person.吃()就是父类的吃方法
如果拐卖了小孩
Person person=new Child();
人贩子还调用person.吃(),但是这时候他就要准备甜食!
重写方法就是为了实现多态特性,楼主在多看看相关资料,做些练习理解下

网友(2):

工作量不一样,你如果只有一个子继承父的,那是工作量没差的。但是如果继承父的多,代码一样的完全可以写在父,有子不一样的,自己重写就好了。
量多的时候就可以对比出效率来了。
望采纳

网友(3):

要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用 override 修饰符。
而且override的方法里面可以使用 base.xxx来调用基类的这个方法

网友(4):

class A
{
  public void print()
  {
  //balabala
  }
}
class B:public A
{
  public override void print()
  {
  //balabala
  }
}

void Print(A a)
{
  a.print();
}
void DoSomething()
{
  A a=new a();
  B b=new b();
  Print(a);
  Print(b);
}

//重写才能达到这种效果,你说重新写个函数,那void Print这个函数就要写两份了,类因为需求可以再加,但相关函数不应该因此受牵连

网友(5):

如果父类中一个方法Func()里有20行代码,子类要实现父类一样的这20行代码的话,不重写就得写20行代码,重写的话直接base.Func();