Java中的接口

发布时间:2023年12月25日


比抽象类抽象地更加具体的一种特殊结构——接口,为了更好实现== 多态==。

什么是接口

Java提供关键字interface,用这个关键字可以定义出一个特殊的结构:接口。
传统的接口中:只有成员变量(常量)和成员方法(抽象方法),且不能创建对象

//A是接口名
public interface A {
	//成员变量(常量),Java默认这里的成员变量都是常量,需要赋初始值
	String SCHOOL_NAME = "str";
	//相当于 public static final String SCHOOL_NAME = "str";
	
	//成员方法(抽象方法),没有方法体
	void test();
	//相当于 public abstract void test();
}
public class Test {
	//目标:认识接口;
	System.out.println(A.SCHOOL_NAME);
}

接口的使用方法

接口不能创建对象;接口是用来被类实现(implement)的,实现接口的类称为实现类
在这里插入图片描述
一个类可以实现多个接口,实现类实现多个接口,必须重写完全部接口的全部抽象方法,否则实现类需要定义成抽象类。

接口的好处

有两点好处:

  • 弥补了类单继承的不足,一个类同时可以实现多个接口;
  • 让程序可以面向接口编程,可以灵活方便地切换各种业务实现。
public class Test {
	public static void main(String[] args) {
	//目标:搞清楚使用接口的好处。 
		Driver s = new A(); 
		s.drive();
		
		Driver d = new B(); 
		d.drive();
	}

	class A extends Student implements Driver, Singer{
		@Override
		public void drive() {
		
		@0verride
		public void sing() {
		}
		
		class Student{
		
		interface Driver{
			void drive();
		}
		
		interface Singer{
			void sing();
		}
	}
}

接口综合案例(班级学生信息管理模块的开发)

请设计一个班级学生的信息管理模块:学生的数据有:姓名、性别、成绩
功能1:要求打印出全班学生的信息;
功能2:要求打印出全班学生的平均成绩。

注意!以上功能的业务实现是有多套方案的,比如:
第1套方案:能打印出班级全部学生的信息;能打印班级全部学生的平均分。
第2套方案:能打印出班级全部学生的信息(包含男女人数);能打印班级全部学生的平均分(要求是去掉最高分、最低分)。
要求:系统可以支持灵活的切换这些实现方案。

接口方法

JDK 8 开始 接口新增三种形式的方法:

  1. 默认方法:使用default修饰,使用实现类的对象调用。
  2. 静态方法:static修饰,必须用当前接口名调用
  3. 私有方法:private修饰,jdk9开始才有的,只能在接口内部被调用。

他们都会默认被public修饰

在这里插入图片描述

新增原因:

增强接口能力,更便于项目的扩展和维护。

接口的多继承

一个接口可以同时继承多个接口。
在这里插入图片描述
在这里插入图片描述

作用

便于实现类去实现。

其他注意事项

  1. 一个接口继承多个接口,如果多个接口中存在方法签名冲突,则此时不支持多继承。
  2. 一个类实现多个接口,如果多个接口中存在方法签名冲突,则此时不支持多实现。
  3. 一个类继承了父类,又同时实现了接口,父类中和接口中有同名的默认方法,实现类会优先用父类的。
  4. 一个类实现了多个接口,多个接口中存在同名的默认方法,可以不冲突,这个类重写该方法即可。
文章来源:https://blog.csdn.net/weixin_45427596/article/details/135185552
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。