在 C# 中,接口(Interface)和抽象类(Abstract Class)都为实现多态性提供了途径,但它们在多个方面存在显著区别,以下从多个维度详细介绍:
1. 定义和语法
- 接口:接口是一种完全抽象的类型,只包含成员的签名(方法、属性、事件、索引器),没有任何实现代码。使用
interface
关键字定义。
interface IAnimal
{
void Eat();
void Sleep();
}
- 抽象类:抽象类是使用
abstract
关键字修饰的类,它可以包含抽象成员(只有声明,没有实现),也可以包含非抽象成员(有具体实现)。
abstract class Animal
{
public abstract void Eat();
public void Sleep()
{
Console.WriteLine("Animal is sleeping.");
}
}