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); } }
标签:调用,c#,work,基础,接口,interface,model,class From: https://www.cnblogs.com/joy-chen35/p/17036037.html