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

  • 相关阅读:
    android Animation整理
    js的console总结
    [原创]cocos2d-lua学习笔记(0)-提纲
    【转】js怎么编译成JSC
    【转】PCDuino用python读取GPIO数据
    Mysql数据库大小相关的问题
    oracle with as
    python jar
    investopedia level 2
    warning MSB3391
  • 原文地址:https://www.cnblogs.com/ilrc/p/14984313.html
Copyright © 2011-2022 走看看