【Java】接口

Java接口的由来

学过C++的朋友都知道【多继承】这个概念

而在Java这种【完全面向对象】的语言中,多继承这个概念是没有的

但是有时候又必须用到【多继承】的某些特性

于是出现了【接口】这个概念

接口

接口代表着一个类所具有的方法的特征集合

如果一个【抽象类】中的所有方法都是【抽象】

那么就可以将这个【抽象类】定义成一个【接口】

关键字 [ interface ] [ implements ]

注意

接口中不能含有【非抽象方法】


接口是提供方法的特征的,都应该是抽象的

所以才被定义成【接口】

具体实例

我们定义一个汽车类Car

再定义两个接口,分别是加汽油方法的接口 和【给电动车充电的接口

然后定义【电动车】,继承Car类 并 实现【给电动车充电】的接口

然后定义【加油车】,继承Car类 并 实现【加汽油方法】的接口

汽车类 Car

public class Car {
	private String brand;
	private String type;
	private String num;
	
	public Car(String brand,String type,String num)
	{
		this.brand = brand;
		this.type = type;
		this.num = num;
	}
	
	public void printCar()
	{
		System.out.println("品牌"+brand);
		System.out.println("类型"+type);
		System.out.println("车牌号"+num);
	}
	
}

电力车接口 EleInf

public interface EleInf {
	public void addEle(float eleCount);
}

用油车接口 OilInf

public interface OilInf {
	public void addOil(float oilCount);//加汽油的接口
}

电力车类 EleCar-》继承 Car 类 并 实现 EleInf 接口

public class EleCar extends Car implements EleInf{
		private float maxEleCount;
		private float currentEleCount;
		
		public EleCar(String brand,String type,String num,float maxEleCount,float currentEleCount)
		{
			super(brand,type,num);
			this.maxEleCount = maxEleCount;
			this.currentEleCount = currentEleCount;
		}
		
		public void addEle(float eleCount)
		{
			if((currentEleCount+eleCount) >maxEleCount)
			{
				System.out.println("电满了"+(currentEleCount+eleCount-maxEleCount));
			}
			else
			{
				this.currentEleCount+=eleCount;
			}
		}
}

用油车类 OilCar-》继承 Car 类 并 实现  OilInf 接口

public class OilCar extends Car implements OilInf {
	private float maxOilCount;
	private float currentOilCount;
	
	public OilCar(String brand,String type,String num,float maxOilCount,float currentOilCount)
	{
		super(brand,type,num);
		this.maxOilCount = maxOilCount;
		this.currentOilCount = currentOilCount;
	}
	
	public void addOil(float oilCount)
	{
		if((currentOilCount+oilCount) >maxOilCount)
		{
			System.out.println("油溢出了"+(currentOilCount+oilCount-maxOilCount));
		}
		else
		{
			this.currentOilCount+=oilCount;
		}
	}
}

例子中的示意图

由图所示,Java中,接口是提供类似【多继承】功能的一种方法

又避免了【多继承】容易引发【二义性】的缺点

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值