C# 抽象类继承接口简单测试

class IA_TEST
{
    interface ITest
    {
        void Test();
    }

    abstract class IATest : ITest
    {
        public abstract void Test();
    }

    class MyTest : IATest
    {
        public override void Test()
        {
            Console.WriteLine("抽象类实现");
        }
    }


    static void Main()
    {
        ITest test = new MyTest();
        test.Test();

        IATest iATest = new MyTest();
        iATest.Test();
        ITest test1 = iATest;
        test1.Test();

        Console.ReadKey();
    }
}

这样也是可以的,在抽象类实现:

abstract class IATest : ITest
{
    public void Test()
    {
        Console.WriteLine("抽象类实现");
    }
}

class MyTest : IATest
{
    //public override void Test()
    //{
    //    Console.WriteLine("抽象类实现");
    //}
}

输出:

抽象类实现
抽象类实现
抽象类实现

虚函数实现也是有多态的

class IA_TEST
{
    interface ITest
    {
        void Test();
        object GetExtraInfo(object obj);
    }

    abstract class IATest : ITest
    {
        public void Test()
        {
            Console.WriteLine("抽象类实现");
        }

        public virtual object GetExtraInfo(object obj)
        {
            return obj;
        }
    }

    class MyTest : IATest
    {
        public override object GetExtraInfo(object obj)
        {
            if (obj is string str)
            {
                return "MyTest: " + str;
            }

            return obj;
        }
    }


    static void Main()
    {
        ITest test = new MyTest();
        test.Test();

        Console.WriteLine(test.GetExtraInfo("Hello world!").ToString());

        Console.ReadKey();
    }
}

输出:

抽象类实现
MyTest: Hello world!
posted @ 2022-10-21 09:53  double64  阅读(47)  评论(0)    收藏  举报