Java接口的基本用法(小白必读)
在 Java 程序中,一个类只能有一个父类,只支持单重继承,不支持多重继承。但在实际应用中,又经常需要使用多重继承来解决问题。因此,Java 提供了接口,以实现类的多重继承。
在面向对象的程序开发过程中,抽象类与接口是实际项目开发过程中使用最广泛的方法,本节重点讲解接口的基本用法。
从面向编程的角度,可以将接口理解为对不同类型的事物的共同的行为特征的抽象。在现实世界中存在一种普遍的现象,从抽象的角度来看,不同类型的事物可能拥有相同的行为特征。
例如,鸟和飞机都有飞行的行为特征,但是由于鸟和飞机是不同类型的事物,因此不应该使用统一的父类来抽象飞行这一共同的行为特征。此时,可以使用一个接口来抽象飞行的行为特征,将接口命名为“可飞行的”。此时可以将某个类和接口组合到一起,表示该类具备该接口抽象的行为特征。
类和接口的组合方式是类“实现”某个接口。例如,一个实现了“可飞行的”接口的类,表示该类具备飞行的行为特征。
在 Java 中,可以使用关键字 interface 来定义一个接口,语法格式如下:
从 Java 8 开始,在接口中可以定义使用 default 和 static 修饰的方法,这些方法可以具有方法体。在 Java 9 中,接口中的方法可以使用 private 和 private static 修饰。接口中所有的属性均使用 public static final 修饰,即全局常量。目前,一个 Java 接口中最多可以有 6 种不同的类型。
在 Java 中,使用接口是为了克服单重继承的限制,因为一个类只能有一个父类,而一个类可以实现多个接口。另外,在定义接口时,一个接口可以有多个父接口,它们之间用逗号分隔。
接下来通过一个实例介绍接口的实现。
在面向对象的程序开发过程中,抽象类与接口是实际项目开发过程中使用最广泛的方法,本节重点讲解接口的基本用法。
什么是接口
Java 程序中的接口是一种抽象类型,用于描述类必须实现的行为。从面向编程的角度,可以将接口理解为对不同类型的事物的共同的行为特征的抽象。在现实世界中存在一种普遍的现象,从抽象的角度来看,不同类型的事物可能拥有相同的行为特征。
例如,鸟和飞机都有飞行的行为特征,但是由于鸟和飞机是不同类型的事物,因此不应该使用统一的父类来抽象飞行这一共同的行为特征。此时,可以使用一个接口来抽象飞行的行为特征,将接口命名为“可飞行的”。此时可以将某个类和接口组合到一起,表示该类具备该接口抽象的行为特征。
类和接口的组合方式是类“实现”某个接口。例如,一个实现了“可飞行的”接口的类,表示该类具备飞行的行为特征。
在 Java 中,可以使用关键字 interface 来定义一个接口,语法格式如下:
interface 接口名 [extends 接口1,接口2...](
//接口内的方法,省略关键字abstract
返回值类型 方法名(参数列表);
}
在 Java 中,与类的成员类型相比,接口中的成员类型显得较为局限。在 Java 8 以前的所有版本中,接口的所有方法都不包含实现(方法体),即都是抽象方法,并且限定都使用 public abstract 来修饰。从 Java 8 开始,在接口中可以定义使用 default 和 static 修饰的方法,这些方法可以具有方法体。在 Java 9 中,接口中的方法可以使用 private 和 private static 修饰。接口中所有的属性均使用 public static final 修饰,即全局常量。目前,一个 Java 接口中最多可以有 6 种不同的类型。
在 Java 中,使用接口是为了克服单重继承的限制,因为一个类只能有一个父类,而一个类可以实现多个接口。另外,在定义接口时,一个接口可以有多个父接口,它们之间用逗号分隔。
接口的实现
在 Java 中,类可以通过关键字 implements 来指定实现接口的名称,语法格式如下:
[修饰符] 类名 extends '父类' [implements <接口1>,<接口2>,]{
}
- 修饰符用于指定类的访问权限,可以是 public、final和abstract,可选。
- implements 接口列表可选,用于指定该类实现哪些接口。当使用关键字 implements 时,接口列表为必选参数。
接下来通过一个实例介绍接口的实现。
/*
* 定义Flyable接口
*/
interface Flyable {
// 定义全局常量,默认使用public static final修饰
String f = "I have wings!";
// 定义抽象方法takeoff(),默认使用public abstract修饰
void takeoff();
// 定义抽象方法fly()
void fly();
// 定义Glidable接口
}
// 定义Glidable接口
interface Glidable extends Flyable {
void glide();
}
// Bird类实现了接口
class Bird implements Glidable {
// 实现takeoff()方法
public void takeoff() {
System.out.println("我要起飞了!");
}
public void glide() {
System.out.println("我在天空中滑翔!");
}
// 实现fly()方法
public void fly() {
System.out.println("我飞不了那么高!");
}
// 定义测试类
public class Test {
public static void main(String args[]) {
// 创建Bird类的实例对象
Bird b = new Bird();
// 调用Bird类的takeoff()方法
b.takeoff();
// 调用Bird类的glide()方法
b.glide();
// 调用Bird类的fly()方法
b.fly();
}
}
}
运行结果为:
我要起飞了!
I have wings!我在天空中滑翔!
I have wings!我飞不了那么高!
ICP备案:
公安联网备案: