zoukankan      html  css  js  c++  java
  • c#接口显式和隐式实现的区别

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

  • 相关阅读:
    Linux下的内核测试工具——perf使用简介
    浅谈C++中指针和引用的区别
    成为Java顶尖程序员 ,看这11本书就够了
    spring注解详解
    Spring AOP详解和实现方式
    Spring IoC中各个注解的理解和使用
    NameNode配置HA后及其反过程Hive路径不正确的问题解决
    [maven] 常用插件解析
    Saiku3.15去除License与主界面
    saiku系列文章
  • 原文地址:https://www.cnblogs.com/ilrc/p/14984313.html
Copyright © 2011-2022 走看看