概念
接口(interface)是抽象方法和常量的集合。
从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含方法和常量的定义,而没有变量和方法的实现。一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现类可以具有不同的行为(功能)。由此,接口具有强大的灵活性:“规定一个类做什么,而不管你如何做”。此外,接口还具有多继承的特性。
定义
使用interface来定义一个接口。接口体由常量定义和方法定义两部分组成。接口定义的基本格式如下:
[修饰符] interface 接口名 [extends 父类接口名列表] {
[public] [static] [final] 常量;
[public] [abstract] 方法;
}
例子
//定义一个Move接口
interface Move {
void move;
}
//定义一个MoveFast实现类
class MoveFast implementsMove {
public void move {
System.out.println("MoveFast");
}
}
//定义一个MoveSlow实现类
class MoveSlow implements Move {
public void move {
System.out.println("MoveSlow");
}
}
通过接口来引用类——接口多态
接口灵活性表现:我们可以定义一个接口类型的引用变量来指向实现接口的类的实例对象。
//定义一个Move接口
interface Move {
void move;
}
//定义一个MoveFast实现类
class MoveFast implementsMove {
public void move {
System.out.println("MoveFast");
}
}
//定义一个MoveSlow实现类
class MoveSlow implements Move {
public void move {
System.out.println("MoveSlow");
}
}
//定义测试类
class Test
{
public static void main(args[])
{
Move a; //接口类型引用a
a=new MoveFast() //指向实现类MoveFast的实例对象
a.move();
a=new MoveSlow() //指向实现类MoveSlow的实例对象
a.move();
}
}
/*
输出结果为:
MoveFast
MoveSlow
*/
一个接口,多个方法,展现了Java的动态多样性。
接口多实现
在Java中,类的多继承是不合法的,但接口允许多继承和多实现。
//定义一个Move接口
interface Move {
void move;
}
//定义一个Speak接口
interface Speak {
void Speak;
}
//定义一个HumanAbility接口
interface HumanAbility extends Move,Speak {
}
//定义一个Boy实现类
class Boy implements Move,Speak {
public void move {
System.out.println("Boy can move");
}
public void speak {
System.out.println("Boy can speak");
}
}
//定义一个Girl实现类
class Girl implements HumanAbility {
public void move {
System.out.println("Girl can move");
}
public void speak {
System.out.println("Girl can speak");
}
}
//定义一个Monkey实现类
class Monkey implements Move {
public void move {
System.out.println("Monkey can move");
}
}
//定义测试类
class Test
{
public static void main(args[])
{
Boy boy=new Boy ;
boy.move;
boy.speak;
Girl girl=new Girl;
Girl.move;
Girl.Speak;
Monkey monkey=new Monkey;
monkey.move;
}
}
/*
输出结果为:
Boy can move
Boy can speak
Girl can move
Girl can speak
Monkey can move
*/