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 static final

	public abstract void fly();
	void stop();// 此处隐式包含修饰符 public abstract
}

接口的实现

//实体类
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();
	//此时已经继承了fly和stop抽象方法
}

接口的多态性

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);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值