c#基础之——接口

1  [serializable]序列化,一般用于载入json文件,model中的一个class(model)这时候类其实就相当于一个数据类型,可以存储从jeson文件中提取出来的各个信息。model之间的子类,model里面的东西,就类似工具箱、数据类型

然后每个信息又相当于类的一个属性,可以直接用,来调用

或者说一个类。可以调佣其中各种属性和方法

 

2、interface 接口用于类(不包含model之间的子类,model里面的东西,就类似工具箱,只是工具。这里的子类是指用来实现功能的子类,例如usercontrol、其它的form。它们实现功能和逻辑,属于control)之间的方法 调用(这样的理解是错的。)

就是其他子类要调用main中的函数的时候,就用接口去实现(降低model间的耦合度)

方法要设置成public

main的class要继承一下interface

子类在调用interface的方法时,interface要作为一个参数传入要调用interface中方法的方法,main中调用这个方法时 ,参数传入用 this

子class和子class之间的函数调用用什么呢,像usercontrol中函数的相互调用,interface吗?

 

(上面的理解感觉都太片面了)

作用就是降低model之家耦合,可以实现任意model间函数的调用。继承interface、函数写入interface,通过interface调用

接口就相当于一个声明,在里面申明——属性、方法、事件(都是public)。但是这些都只是声明,具体实现要派生类去实现。也就是继承这个接口的类,要实现里面所有的声明内容。然后其他的类,就可以通过接口,去调用这个派生类里面接口中声明的函数。

 

具体的使用逻辑:

我是一个类,里面很多得方法,其中一些方法可能其他类也有用到,怎么办呢。这时候:

第一步:创建一个接口,把那些其他类可能用到的我的方法的声明都写进去

第二步:我继承一下这个接口

第三步,其他类就可以通过这个接口来调用我的方法啦。怎么调用呢。因为是我的方法,需要通过我的实例去调用(我的实例(this也是我的实例)转换成接口)。所以它可以先把我当做一个数据类型创建一个我实例。然后它在把我这个分身通过 as 转换成接口。然后直接使用 . 就可以调用了。(接口的实例可以是继承接口的任意一个类)

(这里听起来好像多走了一步对不对,它既然已经在它里面创建了一个我的实例,为什么还要通过接口去调用。我直接通过这个实例然后  . 调用不行吗。是可行的,但是这样耦合度会很高(耦合就是指不同类之间的联系),所以使用接口可以降低耦合,)

接口可以多继承。

复制代码
class Programfa
{
    static void Main(string[] args)
    {
        IWorker james1 = new James1();//每一个类都可以当做一种数据类型来使用,接口的实例可以是继承接口的任意一个类
        IWorker james2 = new James2();
        James3 james3 = new James3();
        james1.work("设计");
        james2.work("编程");
        james3.work("测试");
        //从这个例子我体会到了有接口的好处,可以想象如果又来了新的员工。
        //如果不采用接口,而是每个员工都有一个单独的类,这样就会容易出错。
        //如果有接口这种协议约束的话,那么只要实现了接口就肯定有接口里声明的方法,我们只需拿来调用。
    }
}
 
public interface IWorker { void work(string s); }
class James1 : IWorker
{
    public void work(string s)
    {
        Console.WriteLine("我的名字是James1,我的工作是" + s);
    }
}
class James2 : IWorker
{
    public void work(string s)
    {
        Console.WriteLine("我的名字是James2,我的工作是" + s);
    }
}
class James3 : IWorker
{
    public void work(string s)
    {
        Console.WriteLine("我的名字是James1,我的工作是" + s);
    }
}
复制代码

 

posted @   晨星shine  阅读(294)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示