📅  最后修改于: 2023-12-03 14:40:31.327000             🧑  作者: Mango
在C#中,抽象类和接口都是用来定义一些抽象的方法和属性,但它们之间也有一些重要的不同点。
抽象类是一个不能被实例化的类,它只能被用作其他类的基类。抽象类中可以包含抽象方法和具体方法,但只要类中有一个抽象方法,这个类就必须被定义为抽象类。子类必须实现抽象方法或在子类中继续声明为抽象方法。
以下是一个使用抽象类的简单示例:
public abstract class Animal
{
public abstract void Eat();
public void Sleep()
{
Console.WriteLine("Zzz");
}
}
public class Dog : Animal
{
public override void Eat()
{
Console.WriteLine("I'm eating a bone");
}
}
static void Main(string[] args)
{
Animal animal = new Dog();
animal.Eat(); // 输出 I'm eating a bone
animal.Sleep(); // 输出 Zzz
}
接口是一组方法和属性的声明,它们没有实现。实现接口的类必须实现接口中定义的所有成员。接口中的所有方法都是公共的,它们没有具体的实现,而是由实现了接口的类来提供。
以下是一个使用接口的简单示例:
public interface ICrushable
{
void Crush();
}
public class Apple : ICrushable
{
public void Crush()
{
Console.WriteLine("Splat!");
}
}
static void Main(string[] args)
{
ICrushable crushable = new Apple();
crushable.Crush(); // 输出 Splat!
}
在使用抽象类和接口之前,应该明确它们的区别并根据需要做出选择。通常,当您想要创建可扩展的对象层次结构时,应使用抽象类,当您想要实现多态性时,或者实现多个接口时,应使用接口。