抽象和虚拟有什么区别?

Bre*_*ead 9 c#

抽象和虚拟都将在子类中被覆盖,而不是差异.

是虚拟方法有身体和抽象只是一个签名????

Kon*_*lph 27

是虚拟方法有身体和抽象只是一个签名????

究竟.关键是可以在派生类中重写虚方法,而必须覆盖抽象方法.同样,具有至少一个抽象方法的类本身必须是抽象的,即它不能直接实例化,因为它的实现(部分)缺失.

最后,每个抽象方法也都是虚拟的.virtual基本上只是意味着该方法在运行时被分派到正确的类,因此可以重写它以实现运行时多态性.

  • 我同意,但我的意思是,如果你声明一个方法虚拟,客户端不必实现它,即使它们应该.虚拟方法也可以具有默认行为.客户端必须实现抽象方法,并且不能具有默认行为.看起来你去抽象路线与虚拟路线的唯一原因是你真的想要实施一个方法并将责任放在客户端上. (2认同)

Eti*_*tel 19

摘要意味着你必须覆盖它.虚拟意味着您可以覆盖它.或多或少.

  • 除此之外:使用类中的抽象方法,您的整个类将是抽象的,这意味着您无法创建此类的实例,只能创建派生的非抽象子类. (4认同)