Java接口(interface)概念阐述以及代码示例
详述
接口的概念
Java接口(interface)是Java编程语言中的一种抽象类型,是抽象方法的集合。一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
接口的特性
接口中所有变量都是公共常量,以public static final修饰。
接口中所有方法都是隐式抽象的,被隐式地指定为 public abstract。
任何接口都不能实现抽象方法。
接口不能有构造方法,即不能被实例化。
接口与接口间可以实现继承(包含多继承)
ps: jdk8之后,接口可以定义 static方法 与 default方法。 static方法只能通过接口调用,不能通过实现类调用。default只能通过接口实现类调用,不能通过接口名调用。
接口和类的关联
类描述属性和方法,而接口定义类的行为模式。
实现接口的类要实现接口中的所有抽象方法,否则该类为抽象类。
接口和抽象类的区别
接口不能包含具有方法体的方法,而抽象类可以。
接口的成员变量只能以public static final修饰,而抽象类没有限制。
接口可以被多实现,抽象类只能被单继承。
示例
接口的声明
interface Flyable{
public static final int SPEED_MAX = 7900;
int SPEED_MIN = 0;
public abstract void fly();
void stop();
}
接口的实现
class Plane implements Flyable{
public void fly(){
System.out.println("飞机起飞");
}
public void stop(){
System.out.println("飞机降落");
}
}
abstract class Kite implements Flyable{
public void fly(){
System.out.println("放飞风筝");
}
}
接口的多实现
interface Attackable{
public abstract void attack();
}
class Bullet implements Flyable,Attackable{
public void fly(){
System.out.println("子弹发射");
}
public void stop(){
System.out.println("子弹停止");
}
public abstract void attack(){
System.out.println("子弹命中");
}
}
接口的继承
interface Bird extends Flyable{
public abstract void eat();
}
接口的多态性
class CatchFly{
public void catchThem(Flyable flything){
flything.stop();
System.out.println("抓捕飞行物");
}
}
public class InterfaceTest{
public static void main(String[] args){
Plane pla = new Plane();
CatchFly catcher = new CatchFly();
catcher.catchThem(pla);
}
}