在抽象类和非抽象类中抽象方法中定义非抽象方法的目的是什么?
使用这些的有用场景是什么?
答案 0 :(得分:3)
您不能在非抽象类中声明abstract
方法。来自C#规范:
10.6.6抽象方法
(...)抽象方法声明仅允许在抽象类(第10.1.1.1节)中使用。
abstract
类中的非抽象方法是一种不必(或有时甚至不能)在派生类中重新实现的方法。
它们提供了一些在所有派生类中独立且相同的实现(当不标记为virtual
时)或者可以被覆盖但具有一些默认行为(使用virtual
修饰符)时
这主要是抽象类与接口(不能包含任何实现)的区别。
答案 1 :(得分:1)
抽象类的一个特性是除了必须实现的抽象方法之外,您还可以实现基类功能。这对代码重用很有用。
非抽象类中不能有抽象方法。
答案 2 :(得分:1)
在抽象类中定义非抽象方法的目的是什么?
一个抽象类只声明抽象方法,与声明一个接口没什么不同;通常,抽象类包括一些最小/默认的与实现无关的功能,同时为依赖于实现的事物留下抽象存根。
...和非抽象类中的抽象方法?
您不能在非抽象类中声明抽象方法。
答案 3 :(得分:1)
将您的方法定义为Virtual而不是Abstract。