C#笔记⑧——抽象类

一、抽象类

抽象类与接口是有很大区别的。

首先抽象类里至少有一个不完全实现的方法、属性、事件。

而接口是一个全部都完全未实现的方法、属性、事件。


抽象类的属性

如果一个类里面有一个抽象(abstract)的方法,则这个类也要加abstract,这就诞生了一个抽象类。
如果有继承关系,那么父类有抽象类的成员,那么子类必须实现父类所抛出来的方法功能
而抽象类就是为了补充原来未完成的方法,让继承者完成的功能

点击查看代码
    class Test
    {
        static void Main(string[] args)
        {
            Vehicle car=new Car();
            car.Run();
        }

    }


    abstract class Vehicle
    {
        public  void Stop()
        {
            System.Console.WriteLine("Stopping");
        }

        public abstract void Run();
    }

    class Car:Vehicle
    {
        public override void Run()
        {
            System.Console.WriteLine("Car is running");
        }
    }

    class Truck:Vehicle
    {
        public override void Run()
        {
            System.Console.WriteLine("Trunck is Running");
        }
    }

纯虚抽象类

里面只有抽象成员,如果继承的子类也是抽象类,则让他也继承这个抽象成员

点击查看代码
    class Test
    {
        static void Main(string[] args)
        {
            Vehicle car=new Car();
            car.Run();
        }

    }


    abstract class VehicleBase
    {
     public abstract void Run();
     public abstract void Stop();
    }
    abstract class Vehicle:VehicleBase   //同为抽象类,则继承
    {
        public override void Stop()
        {
            System.Console.WriteLine("Stopping");
        }

    }

    class Car:Vehicle
    {
        public override void Run()
        {
            System.Console.WriteLine("Car is running");
        }
    }

    class Truck:Vehicle
    {
        public override void Run()
        {
            System.Console.WriteLine("Trunck is Running");
        }
    }

纯虚抽象类转接口

纯虚抽象类接口,他们的不同是
接口中不能publicabstract,子类不能有override

点击查看代码
    class Test
    {
        static void Main(string[] args)
        {
            Vehicle car=new Car();
            car.Run();
        }

    }


    interface VehicleBase
    {
    void Run();
    void Stop();
    }
    abstract class Vehicle:VehicleBase
    {
        public void Stop()
        {
            System.Console.WriteLine("Stopping");
        }

        public abstract void Run();  //未完成的也可以下推给其他子类

    }

    class Car:Vehicle
    {
        public override void Run()
        {
            System.Console.WriteLine("Car is running");
        }
    }

    class Truck:Vehicle
    {
        public override void Run()
        {
            System.Console.WriteLine("Trunck is Running");
        }
    }
posted @ 2022-02-06 23:37  Ariaaaaa  阅读(6)  评论(0)    收藏  举报