亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

接口的隱式實現與顯式實現

標簽:
Html5

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

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的显式实现部分,甚至这二个显式实现都可以去掉,然后再观察下输出结果)

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消