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 @   double64  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示