📅  最后修改于: 2020-04-05 11:48:32             🧑  作者: Mango
像类一样,接口可以具有方法和变量,但是默认情况下,接口中声明的方法是抽象的(仅方法签名,没有主体)。
语法 :
interface {
// 声明常量字段
// 声明抽象方法
//
}
要声明接口,请使用interface关键字。它用于提供总体抽象。这意味着默认情况下,接口中的所有方法都以空主体声明并且是公共的,并且所有字段都是公共的,静态的和最终的。实现接口的类必须实现接口中声明的所有方法。要实现接口,请使用Implements关键字。
我们为什么要使用接口interface?
// 一个简单的接口 interface
interface Player
{
final int id = 10;
int move();
}
要实现一个接口,我们使用关键字interface:
// Java展示接口interface.
import java.io.*;
// 一个简单的接口
interface In1
{
// public, static and final
final int a = 10;
// public and abstract
void display();
}
// 一个实现接口的类
class TestClass implements In1
{
public void display()
{
System.out.println("芒果");
}
// 测试代码
public static void main (String[] args)
{
TestClass t = new TestClass();
t.display();
System.out.println(a);
}
}
输出:
芒果
10
一个真实的示例:
让我们以自行车,汽车,自行车…等车辆为例,它们具有共同的功能。因此,我们制作了一个接口并放置了所有这些通用功能。并让Bicycle,Bike,car….etc等以自己的方式在自己的类中实现所有这些功能。
import java.io.*;
interface Vehicle {
// 抽象方法
void changeGear(int a);
void speedUp(int a);
void applyBrakes(int a);
}
class Bicycle implements Vehicle{
int speed;
int gear;
// 改变档位
@Override
public void changeGear(int newGear){
gear = newGear;
}
// 加速
@Override
public void speedUp(int increment){
speed = speed + increment;
}
// 减速
@Override
public void applyBrakes(int decrement){
speed = speed - decrement;
}
public void printStates() {
System.out.println("速度: " + speed
+ " 档位: " + gear);
}
}
class Bike implements Vehicle {
int speed;
int gear;
// 换挡
@Override
public void changeGear(int newGear){
gear = newGear;
}
// 加速
@Override
public void speedUp(int increment){
speed = speed + increment;
}
// 减速
@Override
public void applyBrakes(int decrement){
speed = speed - decrement;
}
public void printStates() {
System.out.println("速度: " + speed
+ " 档位: " + gear);
}
}
class GFG {
public static void main (String[] args) {
// 创建一个Bicycle对象
Bicycle bicycle = new Bicycle();
bicycle.changeGear(2);
bicycle.speedUp(3);
bicycle.applyBrakes(1);
System.out.println("Bicycle当前状态 :");
bicycle.printStates();
// creating instance of the bike.
Bike bike = new Bike();
bike.changeGear(1);
bike.speedUp(4);
bike.applyBrakes(3);
System.out.println("Bike当前状态 :");
bike.printStates();
}
}
输出;
Bicycle当前状态 :
速度: 2 档位: 2
Bike当前状态 :
速度: 1 档位: 1
JDK 8中的接口中添加了新功能
// Java展示JDK 8中的接口中添加新功能
interface In1
{
final int a = 10;
default void display()
{
System.out.println("你好");
}
}
// 一个实现接口的类
class TestClass implements In1
{
// 测试代码
public static void main (String[] args)
{
TestClass t = new TestClass();
t.display();
}
}
输出:
hello
// Java展示在接口中定义静态方法
interface In1
{
final int a = 10;
static void display()
{
System.out.println("你好");
}
}
// 一个实现接口的类
class TestClass implements In1
{
// 测试代码
public static void main (String[] args)
{
In1.display();
}
}
输出:
你好
有关接口的重点:
JDK 9中接口中添加的新功能
从Java 9开始,接口还可以包含以下内容