7.接口
接口的定义
所谓接口也是一个java
文件,其中包含了一系列需要实现的函数,关键字:interface
。
如下示例:
public interface role {
public void greet();
public void move();
public int getSpeed();
}
接口的继承
接口像类一样,也可以继承。**
public interface Hero extends role{
public void attack();
}
需要在类中实现具体的接口,关键字:implements
。
-
必须将接口中需要实现的函数全部实现,否则会报错。
-
可以
implements
多个接口。中间用逗号隔开。
示例如下:
package org.example.role.imp;
import org.example.role.Hero;
public class Zeus implements Hero{
private final String name = "Zeus";
public void attack()
{
System.out.println(name + ": Attack");
}
public void greet()
{
System.out.println(name + ": Hi");
}
public void move()
{
System.out.println(name + ": Move");
}
public int getSpeed()
{
return 10;
}
}
接口实现多态
若两个类都实现了接口中的函数,我们可以使用接口的名称来实现多态。函数发生调用时,会自动确定是哪一个类的函数,并进行调用。
package org.example.role.imp;
import org.example.role.Hero;
public class Athena implements Hero{
private final String name = "Athena";
public void attack() {
System.out.println(name + ": Attack");
}
public void greet() {
System.out.println(name + ": Hi");
}
public void move() {
System.out.println(name + ": Move");
}
public int getSpeed() {
return 20;
}
}
Main.java
调用:
package org.example;
import org.example.role.Hero;
import org.example.role.imp.Athena;
import org.example.role.imp.Zeus;
public class Main {
public static void main(String[] args)
{
Hero Zeus = new Zeus();
Hero Athena = new Athena();
Zeus.attack();
Athena.attack();
//输出:
//Zeus: Attack
//Athena: Attack
}
}