在head first 设计模式中 用到了很多很多接口对象
首先澄清一个问题,就是接口不仅可以声明对象,而且可以把对象实例化,还可以当做参数被传入。
一、接口回调
这就是继承中的向上转型。父类 FL=new 子类();只不过这里的父类就是interface接口。(个人认为这里不管是class的override还是interface的重写,都是一样的用法)
可以把实现某一接口类创建的对象的引用赋给该接口声明的接口变量,那么该 接口变量就可以调用被类实现的接口中的方法。实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口方法
直接上代码
代码如下 | 复制代码 |
usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text;
namespaceConsoleApplication1 { interfaceItemp { doubleplus(); } publicclassnum : Itemp { doubleaa, bb; publicnum(doublea,doubleb) { this.bb = b; this.aa = a; } publicdoubleplus() { return(aa * bb); } } classProgram { staticvoidMain(string[] args) { num n =null;//声明类对象引用 Itemp tm =null;//声明接口对象引用 tm =newnum(1.1, 2.2);//接口回调(向上转型) Console.WriteLine(tm.plus()); Console.ReadKey(); } } } |
通过上面的例子,我们不难看出,接口对象的实例化实际上是一个接口对象作为一个引用,指向实现了它方法的那个类中的所有方法,这一点非常象C++中的函数指针(在C#中类似委托),但是却是有区别的。C#中的接口对象实例化实际上是一对多的,而C++中的函数指针是一对一的。
但是需要注意的是,接口对象的实例化必须用实现它的类来实例化,而不能用接口本身实例化。用接口本身实例化它自己的对象在C#中是不允许的。
敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载像素火影骨架佐助 (Perseverance Fire Shadow)手机版v1.16
下载要塞英雄 安卓版v33.20.0-39082670-Android
下载梦想城镇vivo最新版本 安卓版v12.0.1
梦想城镇vivo版是这款卡通风模拟经营类手游的渠道服版本,玩
怦然心动的瞬间 安卓版v1.0
怦然心动的瞬间是一款真人向的恋爱互动游戏,在游戏中玩家将扮演
曼尼汉堡店游戏 安卓版v1.0.3
曼尼汉堡店是一款非常好玩的精品恐怖类型冒险游戏,在这款游戏中
现代总统模拟器去广告版 安卓版v1.0.46
现代总统模拟器是一款休闲养成类游戏,可能对于不少的玩家来说都
现代总统模拟器付费完整版 安卓版v1.0.46
现代总统模拟器高级版在商店是需要付费的,相对于普通版本,高级