Java之接口

Java之接口

1.接口的相关概念与定义

Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
我们可以将接口看作是一个特殊的类,调用这个接口的类需要实现其中的一切方法,所以又可以将他视作为一个特殊的抽象类。
比如说我们有一个打电话这个功能的接口,还有一个听音乐的接口。现在我们日常生活中,手机可以打电话听音乐,智能手表也可以打电话听音乐。但是Java中不允许多重继承,所以我们需要接口来解决问题。

2.简单的例子

我们先创建两个接口,一个是IPhoto照相的接口,一个是ICall打电话的接口。

public interface ICall {
	public void call();//打电话的方法
	int years =10;
}

public interface IPhoto {
	public void photo();//照相的方法
	int camera = 1000;
}

然后我们定义一个智能手表和智能手机类,分别继承上面两个接口。实现其中的photo和call类。

public class SmartPhone implements ICall, IPhoto {

	@Override
	public void photo() {
		// TODO Auto-generated method stub
		System.out.println("这个电话可以照相");
		System.out.println("这个相机的像素是"+IPhoto.camera);
	}

	@Override
	public void call() {
		// TODO Auto-generated method stub
		System.out.println("这个电话可以打电话");
		System.out.println("这个电话最多能打"+ICall.years+"年");
	}

}



public class SmartPhone implements ICall, IPhoto {

	@Override
	public void photo() {
		// TODO Auto-generated method stub
		System.out.println("这个电话可以照相");
		System.out.println("这个相机的像素是"+IPhoto.camera);
	}

	@Override
	public void call() {
		// TODO Auto-generated method stub
		System.out.println("这个电话可以打电话");
		System.out.println("这个电话最多能打"+ICall.years+"年");
	}

}

下面我们添加测试类

public class DigitalTest {
public static void main(String[] args) {
	IPhoto phone1 = new SmartPhone();
	phone1.photo();
	ICall phone2 = new SmartPhone();
	phone2.call();	
}
}

我们可以使用接口类型的引用指向一个实现了该接口的对象,并且可以调用这个接口中的方法。
这里我们通过接口实例化对象photo1和photo2,他们只能实现他们自己接口内部定义的方法。phone1就无法实现call这个方法。
在这里插入图片描述
我们运行这段代码结果是
在这里插入图片描述
这也体现了java中的多态性。

3.接口的继承

一个接口能继承另一个接口,和类之间的继承方式比较相似。接口的继承使用extends关键字,子接口继承父接口的方法。
下面我们举一个具体的例子。

public interface Sports
{
   public void setHomeTeam(String name);
   public void setVisitingTeam(String name);
}
 
// 文件名: Football.java
public interface Basketball extends Sports
{
   public void homeTeamScored(int points);
   public void visitingTeamScored(int points);
   public void endOfQuarter(int quarter);
}
 
// 文件名: Hockey.java
public interface Soccer extends Sports
{
   public void homeGoalScored();
   public void visitingGoalScored();
   public void endOfPeriod(int period);
   public void overtimePeriod(int ot);
}

这就实现了接口的继承。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值