温故知新:接口的隐式实现与显式实现

简介: 这二者的区别,仅在一个类同时实现多个接口,且多个接口中有相同的方法名字定义时,才有比较的意义。 using System; namespace InterfaceTest { class Program { static void Main(str...

这二者的区别,仅在一个类同时实现多个接口,且多个接口中有相同的方法名字定义时,才有比较的意义。

using System;

namespace InterfaceTest
{
    class Program
    {
        static void Main(string[] args)
        {
            TestAB ab = new TestAB();
            ab.HelloWorld(); //Hello World!           

            IB b = ab as IB;
            b.HelloWorld(); //IB.HelloWorld!

            IA a = ab as IA;
            a.HelloWorld(); //IA.HelloWorld!

            Console.Read();
        }
    }

    //IA的接口定义
    interface IA
    {
        void HelloWorld();
    }

    //IB的接口定义
    interface IB
    {
        void HelloWorld();
    }

    class TestAB : IA, IB
    {
        //隐式实现IA与IB的HelloWorld方法
        public void HelloWorld()
        {
            Console.WriteLine("Hello World!");            
        }

        //显式实现IB接口的HelloWorld方法
        void IB.HelloWorld()
        {
            Console.WriteLine("IB.HelloWorld!");
        }

        //显式实现IA接口的HelloWorld方法
        void IA.HelloWorld()
        {
            Console.WriteLine("IA.HelloWorld!");
        }       
    }
}

输出结果已经说明了问题,就不多做解释了。

结论:

1、对于显式实现的接口方法,在类实例上调用时,需要显式转换为指定的接口,然后才能正确调用。

2、如果类实例不显式转换接口,直接用"类实例.接口同名方法"调用,将调用隐式实现的方法.

3、显式实现的接口方法,不能加public之类的关键字修饰。

4、通常显式实现并非必需的步骤.(本例中,可以去掉IA或IB的显式实现部分,甚至这二个显式实现都可以去掉,然后再观察下输出结果)

目录
相关文章
|
5月前
|
编译器 C语言 C++
一分钟搞懂什么是this指针(未涉及静态成员和函数)
一分钟搞懂什么是this指针(未涉及静态成员和函数)
|
5月前
|
测试技术
面向对象的 ABAP 里,全局类和局部类有什么区别,以及各自的使用场合试读版
面向对象的 ABAP 里,全局类和局部类有什么区别,以及各自的使用场合试读版
28 1
|
前端开发
前端学习案例4-this指向问题-隐式调用规则2
前端学习案例4-this指向问题-隐式调用规则2
57 0
前端学习案例4-this指向问题-隐式调用规则2
|
前端开发
前端学习案例3-this指向问题-隐式调用规则
前端学习案例3-this指向问题-隐式调用规则
54 0
前端学习案例3-this指向问题-隐式调用规则
|
关系型数据库 MySQL 编译器
隐式类详解|学习笔记
快速学习隐式类详解。
61 0
|
算法 Java 编译器
如何理解对象赋值给接口的操作(关键在对象!)
如何理解对象赋值给接口的操作(关键在对象!)
如何理解对象赋值给接口的操作(关键在对象!)
|
编译器 Scala 开发者
隐式函数使用注意事项|学习笔记
快速学习隐式函数使用注意事项。
59 0
C++ 继承与派生中的赋值兼容规则问题探究
C++ 继承与派生中的赋值兼容规则问题探究
133 0
C++ 继承与派生中的赋值兼容规则问题探究
|
JavaScript 测试技术
干货 | Web自动化测试中显式等待与隐式等待该怎么用?
在实际工作中等待机制可以保证代码的稳定性,保证代码不会受网速、电脑性能等条件的约束。 等待就是当运行代码时,如果页面的渲染速度跟不上代码的运行速度,就需要人为的去限制代码执行的速度。 在做 Web 自动化时,一般要等待页面元素加载完成后,才能执行操作,否则会报找不到元素等各种错误,这样就要求在有些场景下加上等待。 最常见的有三种等待方式: - 隐式等待 - 显式等待 - 强制等待 后面会一一介
|
JavaScript Java Python
技术分享 | Web自动化之显式等待与隐式等待
技术分享 | Web自动化之显式等待与隐式等待