![](/img/trans.png)
[英]How can a base class with abstract methods be used to handle delegate calls?
[英]Can abstract class be used as non base class?
我是C#編程的新手。 我了解,如果類包含任何抽象方法,則有必要將其修改為抽象類,並且必須在類層次結構中的任何子類中提供其實現。
但是我的問題是我們是否可以有一個沒有任何抽象方法的抽象類(因此它不必成為基類) ,如果是這樣,那么它的意義何在? 請幫助這方面。 :)
是的,您可以有一個沒有任何抽象方法的abstract
基類。 好處是您無法創建此類的實例。
考慮使用接口替換該抽象類。 區別在於該接口可能不包含任何實現,但是在抽象類中,您可以為任何繼承者可以使用的方法提供一些實現。
您無法創建抽象類的實例,並且如果您不使用此類作為基礎-它是無用的(僅對於使用反射的一些棘手目標而言可能)
是的,可以在沒有實現子類的情況下使用它。 基本上,這里有三種“方式”來定義和調用方法:
以下簡單的控制台應用程序給出了一個很好的,具體的(無雙關語)示例:
using System;
namespace ConsoleStuff
{
public abstract class MyAbstractClass
{
public abstract void DoSomethingAbs();
public void DoSomethingElse()
{
Console.WriteLine("Do something general...");
}
public static void TakeABreak()
{
Console.WriteLine("Take a break");
}
}
class MyImplementation : MyAbstractClass
{
public override void DoSomethingAbs()
{
Console.WriteLine("Do something Specific...");
}
}
class Program
{
static void Main(string[] args)
{
// Static method; no instance required
MyAbstractClass.TakeABreak();
var inst = new MyImplementation();
inst.DoSomethingAbs(); // Required implementation in subclass
inst.DoSomethingElse(); // Use method from the Abstract directly
Console.ReadKey();
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.