我很惊讶地知道C#中的抽象类是可能的,也没有抽象方法.
abstract class AbstractDemo
{
public void show()
{
Console.WriteLine("In Show Method");
}
}
class MainDemo:AbstractDemo
{
public static void Main()
{
Console.WriteLine("In Main Method");
}
}
Run Code Online (Sandbox Code Playgroud)
任何解释?
Jon*_*eet 11
这是完全有效的,如果你想提供类似事件的行为,偶尔会有用:提供一个抽象类,其中所有"事件处理程序"都是作为虚方法实现的,默认行为是什么都不做.
然后派生类可以覆盖某些方法,但不必覆盖任何特定方法,因为没有什么是抽象的.这个类仍然是抽象的,因为基类的实例是没有意义的(因为一切都是无操作的).
这种模式在Java中比C#更常见 - 但是在C#中你通常只使用"正确的"事件.
抽象类是必须先扩展才能使用的类。这并不意味着函数本身必须是抽象的。
以 Animal 类为例
public abstract class Animal
{
void Move()
{
//whatever
}
}
public class Fish : Animal
{
void Swim()
{
}
}
public class Dog : Animal
{
void Bark()
{
}
}
Run Code Online (Sandbox Code Playgroud)
所有动物都会移动,但只有鱼会游泳和狗会吠叫。
或者举一个现实生活中的例子。我有一个在我的应用程序中使用的 Asp.net MVC 基本控制器。它有一些我经常需要的基本方法,例如 GetCurrentUser() 和我编写的用于帮助本地化的函数。它还负责跟踪,因此我不必在所有控制器中重写该代码。该类有大约 200 行代码,但没有一个抽象方法。
| 归档时间: |
|
| 查看次数: |
14323 次 |
| 最近记录: |