接口与抽象类的区别

 看懂接口与抽象类的区别:

  

namespace ConsoleApp1
{
    public class A : A_A, I_A, I_B
    {
        public int CountB { get; set; }

        public void MethodA()
        {
            var NumA = 1;
            var a = base.NumA;
            var msg = base.GetString_AA();
            var v_Msg = base.GetString_V_AA();

            //错误:接口和抽象类不能被实例化
            A_A a_A = new A_A();
            I_A i_A = new I_A();
        }

        public override string GetString_V_AA()
        {
            if (CountA == 1)
                return base.GetString_V_AA();
            else
                return "MySelf";
        }

        public override void GetList()
        {
            throw new System.NotImplementedException();
        }
    }

    public class B:A
    {
        public void Test()
        {
            base.GetString_V_AA();
        }
    }

    public abstract class A_A:I_A
    {
        public A_A()
        {

        }
        public int NumA { get; set; }
        public int CountA { get; set; }

        public virtual string GetString_V_AA()
        {
            return "AA.GetString_V_AA";
        }
        public abstract void GetList();

        public string GetString_AA()
        {
            return "AA.GetString_AA";
        }

        public void SetCountA(int value)
        {
            throw new System.NotImplementedException();
        }
    }
    public abstract class A_B
    {
        public int NumB { get; set; }
    }
    public interface I_A
    {
        int CountA { get; set; }
        void SetCountA(int value);
    }
    public interface I_B
    {
        int CountB { get; set; }
        //void SetCountB(int value);
    }

}

 

  相同:

    1、接口和抽象类都可以被继承。

    2、接口和抽象类都不能被实例化。

    3、接口和抽象类都可以包含方法、字段、属性等声明。

    4、接口和抽象类的子类必须实现未实现的方法,抽象类必须实现抽象方法,普通方法无需实现,接口必须实现。

  异同:

    1、抽象类可以有构造方法,接口中不能有构造方法。

    2、抽象类中可以包含静态方法,接口中不能包含静态方法。

    3、一个类可以实现多个接口,但只能继承一个抽象类。

    4、如果抽象继承接口,那么抽象内中必须实现接口成员,抽象类的子类就算也继承了抽象类的接口,那么子类不必实现接口。

posted @ 2019-08-30 17:59  Aminor~  阅读(124)  评论(0编辑  收藏  举报