Head First C# 中文版 图文皆译 第七章 接口和抽象类 page260
2009-03-20 15:06
483 查看
不可以实例化一个接口,但是可以创建它的引用
假设有一个接口定义一个FindFlower()方法,它要求对象有该方法。任何实现了INectarCollector接口的对象都可以。可以是Worker对象,Robot对象,甚至Dog对象也可以。
接口引用就是做这个用的。你可以用接口的引用指向实现了该接口的类的实例,你可以确保指向的对象一定包含会有你想要的方法--即使你并不怎么了解这个对象。
很显然,你不可以用new关键字来实例化接口,因为其中并没有方法、属性的实现体。如果可以实例化一个接口的话,那创建出来的对象怎么可能知道自己应该如何行为呢?
第一行是一个普通的new语句,创建一个叫做Fred的引用并把它指向一个NectarStinger对象。
第二行很有趣。它创建了一个IStingPatrol接口类型的引用变量。初看起来有点奇怪。但是看看下面:
NectarStinger ginger = fred;
上面这行代码你肯定懂--它创建一个叫做ginger的NectarStinger的引用并把它指向fred指向的对象。声明george的那一行也是一样。
到底是怎么样呢?
只有一个new语句,所以只有一个新对象被创建出来。第二个语句创建一个叫做george的引用变量,它可以指向任何实现了IStingPatrol的类的实例。
假设有一个接口定义一个FindFlower()方法,它要求对象有该方法。任何实现了INectarCollector接口的对象都可以。可以是Worker对象,Robot对象,甚至Dog对象也可以。
接口引用就是做这个用的。你可以用接口的引用指向实现了该接口的类的实例,你可以确保指向的对象一定包含会有你想要的方法--即使你并不怎么了解这个对象。
很显然,你不可以用new关键字来实例化接口,因为其中并没有方法、属性的实现体。如果可以实例化一个接口的话,那创建出来的对象怎么可能知道自己应该如何行为呢?
第一行是一个普通的new语句,创建一个叫做Fred的引用并把它指向一个NectarStinger对象。
第二行很有趣。它创建了一个IStingPatrol接口类型的引用变量。初看起来有点奇怪。但是看看下面:
NectarStinger ginger = fred;
上面这行代码你肯定懂--它创建一个叫做ginger的NectarStinger的引用并把它指向fred指向的对象。声明george的那一行也是一样。
到底是怎么样呢?
只有一个new语句,所以只有一个新对象被创建出来。第二个语句创建一个叫做george的引用变量,它可以指向任何实现了IStingPatrol的类的实例。
相关文章推荐
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page298
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page253
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page262
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page299
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page261
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page263
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page280
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page254
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page290
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page292
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page272
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page252
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page282
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page276
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page251
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page259
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page284
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page304
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page270
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page278