Head First C# 中文版 图文皆译 第七章 接口和抽象类 page260

来源:互联网 发布:手机淘宝账号怎么注销 编辑:程序博客网 时间:2024/05/30 19:33

不可以实例化一个接口,但是可以创建它的引用


假设有一个接口定义一个FindFlower()方法,它要求对象有该方法。任何实现了INectarCollector接口的对象都可以。可以是Worker对象,Robot对象,甚至Dog对象也可以。


接口引用就是做这个用的。你可以用接口的引用指向实现了该接口的类的实例,你可以确保指向的对象一定包含会有你想要的方法--即使你并不怎么了解这个对象。


 

很显然,你不可以用new关键字来实例化接口,因为其中并没有方法、属性的实现体。如果可以实例化一个接口的话,那创建出来的对象怎么可能知道自己应该如何行为呢?


 

第一行是一个普通的new语句,创建一个叫做Fred的引用并把它指向一个NectarStinger对象。

第二行很有趣。它创建了一个IStingPatrol接口类型的引用变量。初看起来有点奇怪。但是看看下面:


NectarStinger ginger = fred


上面这行代码你肯定懂--它创建一个叫做ginger的NectarStinger的引用并把它指向fred指向的对象。声明george的那一行也是一样。


到底是怎么样呢?


只有一个new语句,所以只有一个新对象被创建出来。第二个语句创建一个叫做george的引用变量,它可以指向任何实现了IStingPatrol的类的实例。