教程
接口是类模板。虽然不是严格要求,但它们是面向对象编程的组织结构的一部分。接口通过指定方法名称,返回类型(或void)和方法参数(按类型和名称)来定义类的方法。这些方法定义称为签名。因为这是一个模板,所以方法签名不包含代码。代码被输入到接口的实现中。接口用于多态学。
请注意有关接口的这两个要点:
-
如果一个类实现了一个
interface
,那么所有接口的方法都必须出现在类中。 -
的
implements
创建被一个接口建模的类时的关键字被使用。
一个类比
想想从一块木头上切下鸭子诱饵。首先,使用模板将图案追踪到木材上。然后,当木材被切割时,它就像模板一样。然而,在这一点上,模板和木材都没有人们对成品诱饵所期望的任何精细细节。该模板用于定义基本特征,而不是精确的细节。在切割出多个鸭形件后,每个都可以雕刻和装饰。然而,它们都具有相同的基本尺寸和形状。
接口通常用作多个类的模板。这些类都共享接口中定义的方法。但是,方法的实现可能因类而异。
接口的一个例子
名为Animal的界面可能具有feed,groom和pet的方法定义。动物的喂养,梳理和抚摸可以与动物本身不同。
interface Animal { bool feed(bool timeToEat); void groom(); void pet();}
例如,狗类可以以某种可预测的方式实现。
class Dog implements Animal { bool feed(bool timeToEat) { // pour food into bowl return true; } void groom() { // brush well } void pet() { // pet cautiously }}
其他动物类可能有特定需求。
class Giraffe implements Animal { bool feed(bool timeToEat) { // point to the trees return true; } void groom() { // get a ladder // brush well } void pet() { // get a ladder // pet cautiously }}class Tiger implements Animal { bool feed(bool timeToEat) { // toss raw meat into cage return true } void groom() { // tranquilize // brush well } void pet() { // DO NOT PET }}
试一试
创建一个实现Animal接口的gorilla类。
教程代码
interface Animal { bool feed(bool timeToEat); void groom(); void pet();}
预期产出
没有可见的输出。但是,对于包含所有接口方法的大猩猩,结果应该是类,类似于上面实现的类。
解
class Gorilla implements Animal { bool feed(bool timeToEat) { // put gorilla food into cage return true; } void groom() { // lather, rinse, repeat } void pet() { // pet at your own risk }}