2025-02-13 接口interface 和 抽象类abstract 区别

interface和abstract 区别:

接口 interface :
1、 接口中所有的方法只能声明,都是抽象的,可以有属性。
2、 接口主要用于定义行为规范,比如动物,鸟是动物,那么鸟的独特飞行行为可以抽象出接口,会飞的动物。
3、一个类可以实现多个接口,继承的类必须全部实现接口的方法。

抽象类 abstract :
1、抽象类可以实现具体方法,可以有抽象方法,可以声明虚方法,其他和普通类一样。
2、动物类型可以抽象为类,比如鸟类,犬类。
3、一个类只能从抽象类派生出来,只能单继承。需要实现抽象方法。

下面是代码

public abstract class Animal
{
    public Animal()
    {
        
    }
    internal abstract void Eat();

    internal virtual void Sleep(string name="")
    {
        Console.WriteLine($"{name} Sleep");
    }

    internal virtual void Run()
    {
        Console.WriteLine("Run");
    }

}


public interface IFlyable
{
    void Fly();
}


public class Bird : Animal, IFlyable
{
    internal override void Eat()
    {
        Console.WriteLine("Bird Eat");
    }

    public void Fly()
    {
        Console.WriteLine("Bird Fly");
    }


    internal new void Sleep(string name)
    {
        base.Sleep("base");
        Console.WriteLine($"{name}1111111 Sleep 11111111");
    }


}

internal class Program
{
    static void Main(string[] args)
    {
        Bird bird = new Bird();
        IFlyable flyable = bird as IFlyable;

        if (flyable!=null)
        {
            flyable.Fly();
        }

        bird.Eat();
        bird.Fly();
        bird.Sleep("Bird");
        bird.Run();
        Console.ReadKey();
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容