Java基础教程:接口 API
教程
接口是类模板。虽然不是严格要求,但它们是面向对象编程的组织结构的一部分。接口通过指定方法名称,返回类型(或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
}}