前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >认真CS☀️显式接口 & 隐式接口

认真CS☀️显式接口 & 隐式接口

作者头像
星河造梦坊官方
发布2024-08-14 16:43:13
820
发布2024-08-14 16:43:13
举报
文章被收录于专栏:星河造梦坊专栏

🟥 接口

1️⃣ 隐式实现接口

代码语言:javascript
复制
using System;

class a
{
    //隐式实现接口
    interface IA
    {
        void funcA();
    }

    interface IB
    {
        void funcA();
    }

    class C : IA,IB
    {
        public void funcA()
        {
            Console.Write("hello");
        }
    }
} 

在此代码中,我们不知道C为IA的实现,还是IB的实现,因此需要显式实现接口

2️⃣ 显式实现接口

隐式接口实现,即没有指定实现哪个接口方法。显式的接口实现,指的是在实现过程中,明确指出实现哪一个接口的哪一个方法。

代码语言:javascript
复制
using System;

class a
{
    interface IChinese
    {
        void funcA();
    }

    interface IEnglish
    {
        void funcA();
    }

    class C : IChinese,IEnglish
    {
        void IChinese.funcA()
        {
            Console.Write("你好");
        }
        void IEnglish.funcA()
        {
            Console.WriteLine("Hello");
        }
    }

    static void Main()
    {
        IChinese ic = new C();
        ic.funcA();    //输出 你好

        IEnglish ie = new C();   //先转化为接口,再调用方法
        ie.funcA();   //输出  Hello
    }
}

使用显式接口实现方法时,需注意:

1、若显式实现接口,方法不能使用任何访问修饰符,显式实现默认的成员为私有

2、显式实现的成员默认为私有的,且方法不能使用任何访问修饰符,所以无法修改访问级别(隐式实现接口可修改访问级别),此时正确的访问方式是把“实现类”显示转化为对应的接口,通过该接口来调用显式实现内的方法

3、当实现单个接口时,通常使用隐式接口,因为对象可以直接访问接口方法

4、实现多个接口时,一般推荐使用显式的接口

下面案例,实现继承自接口,且实现作为实参调用到方法参数列表的形参中去(形参是接口类),完成这个过程实现即自动转化成接口,该方法输出并且调用的是接口的方法,即可只要是实现,无论什么类,都可用在这个方法运行

代码语言:javascript
复制
using System;

class a
{
    interface IChinese
    {
        string funcA();
        string funcB();
    }

    class C : IChinese
    {
        public string funcA()
        {
            string a="你好";
            return a;
        }
        public string funcB()
        {
            string b = "Hello";
            return b;
        }
    }


    static void method(IChinese ic)
    {
        Console.WriteLine("{0},{1}", ic.funcA(), ic.funcB());   //调用的是接口的方法
    }

    static void Main()
    {
        C d = new C();
        method(d);
    }
}

🟩 Add

仔细观察下面两个文件的代码,方法写在不同的文件里,myMethod()方法写在不同文件里,具体实现过程也是不一样的。

下面展示的是只继承接口,调用另一个文件的类名+方法,完成实现目的

也可将方法写在实现里,直接调用方法就行了

也可在接口里用类把接口和myMethod方法都括起来,这样在实现里面就需要继承接口的 类名+接口名,调用接口文件的类名+方法名

等等,思考并灵活运用

代码语言:javascript
复制
using System;

namespace ns
{


    public interface IChinese
    {
        string funcA();
        string funcB();

    }

    class method
    {
        public static void myMethod(IChinese ic)
        {
            Console.WriteLine("{0},{1}", ic.funcA(), ic.funcB());
        }
    }

}
代码语言:javascript
复制
using System;
using ns;

public class mc : IChinese
{

    public string funcA()
    {
        string a = "我是funcA";
        return a;
    }

    public string funcB()
    {
        string b = "我是funcB";
        return b;
    }


    static void Main()
    {
        method.myMethod(new mc());
    }
}

大家还有什么问题,欢迎在下方留言!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🟥 接口
    • 1️⃣ 隐式实现接口
      • 2️⃣ 显式实现接口
      • 🟩 Add
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档