代码改变世界

c#接口显式和隐式实现的区别

2021-07-08 00:26  hello,逗比  阅读(187)  评论(0编辑  收藏  举报
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 接口显式隐式实现
{
    class Program
    {
        static void Main(string[] args)
        {
            Test t1 = new Test();
            ITest2 test2 = t1;
            test2.study();//ITest2.study  显式实现时候,接口能访问实现接口的方法
            t1.study();//ITest1.study     显式实现时候,子类不能访问显式实现接口的方法,只能访问到类里默认方法
            Test t2 = new Test();
            ITest1 test1 = t2;
            test1.study();//ITest1.study  隐式实现时候,接口能访问实现接口的方法
            t2.study();//ITest1.study      隐式实现时候,子类能访问实现接口的方法,其实也就访问默认方法。
        }
    }


    interface ITest1
    {
        void study();
    }
    interface ITest2
    {
        void study();
    }
    class Test : ITest1, ITest2
    {
         public void study()  //默认就是隐式实现,如果其他接口没显式实现,此时候会同时实现2个接口,如果显式实现了其他接口,此方法不对显式实现接口共享了。实现接口前面需要用public 修饰
        {
            Console.WriteLine("ITest1.study");
        }
        void ITest2.study()  //如果我们要显式实现,就要加上 ITest2.   前面不能有 public,private修饰符
        {
            Console.WriteLine("ITest2.study");
        }
    }
}

显式实现的区别:

1、显示实现的方法只能被接口调用了,不能被类调用该方法,调用会语法报错。

2、如果类实现多个接口,多个接口都有对应的同一个方法名。此时候要么都共同用一个方法实现;要么单独各自实现不同接口的方法,要实现各自的方法就需要用到显式实现了,然后通过 对应的接口对象来调用显式实现的方法