Java中的接口
2023-12-24 23:05:58
比抽象类抽象地更加具体的一种特殊结构——接口,为了更好实现== 多态==。
什么是接口
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 开始 接口新增三种形式的方法:
- 默认方法:使用default修饰,使用实现类的对象调用。
- 静态方法:static修饰,必须用当前接口名调用
- 私有方法:private修饰,jdk9开始才有的,只能在接口内部被调用。
他们都会默认被public修饰
新增原因:
增强接口能力,更便于项目的扩展和维护。
接口的多继承
一个接口可以同时继承多个接口。
作用
便于实现类去实现。
其他注意事项
- 一个接口继承多个接口,如果多个接口中存在方法签名冲突,则此时不支持多继承。
- 一个类实现多个接口,如果多个接口中存在方法签名冲突,则此时不支持多实现。
- 一个类继承了父类,又同时实现了接口,父类中和接口中有同名的默认方法,实现类会优先用父类的。
- 一个类实现了多个接口,多个接口中存在同名的默认方法,可以不冲突,这个类重写该方法即可。
文章来源:https://blog.csdn.net/weixin_45427596/article/details/135185552
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!