17_接口
1.定义
2.格式
3.抽象方法
4.默认方法
5.静态方法
6.私有方法
7.常量
8.注意事项
package JavaBasicReview; public class JavaGrammer { public static void main(String[] args) { System.out.println(InterfaceClass.AGE); InterfaceClass.staticMethod(); System.out.println(Zi.AGE);//接口中的成员变量,可用实现类或者子类接口来调用 //Zi.staticMethod();接口中的静态方法,只能用包含此静态方法的接口调用 //InterfaceClass02.staticMethod();接口中的静态方法,只能用包含此静态方法的接口调用 new Zi().defaultMethod();//当父类中方法与接口中默认方法重名时,优先调父类方法 } } interface InterfaceClass { //接口中可以有成员变量,必须有[public] [static] [final]修饰,必须初始化,可省略,版本要求 >=JDK9 public static final int AGE = 99; //静态方法,只能通过接口类调用,实现类不能重写该方法,版本要求 >= JDK8 public static void staticMethod() { staticPrivateMethod(); System.out.println("接口中的静态方法!"); } //静态私有方法,为了接口中静态方法公共代码的抽离,解决了多个静态方法中重复代码的问题 版本要求 >=JDK9 private static void staticPrivateMethod() { System.out.println("接口中静态方法中的重复代码!"); } /*默认方法,为了解决:当接口类升级后(添加了抽象方法),其所有的实现类必须都实现该方法,很不方便 * 使用默认方法,可以解决该类问题,只需要部分实现类实现该默认方法即可,版本要求>= JDK8*/ public default void defaultMethod() { privateMethod(); System.out.println("接口中的默认方法!"); } //普通私有方法,解决多个默认方法中重复代码的问题 private void privateMethod() { System.out.println("接口中普通私有方法!"); } //抽象方法 public abstract void abstractMethod(); } interface InterfaceClass01 { //抽象方法 public abstract void abstractMethod(); /*当实现类实现多个接口时,如果默认方法重名,那么实现类必须重写该默认方法*/ public default void defaultMethod() { privateMethod(); System.out.println("接口01中的默认方法!"); } //普通私有方法,解决多个默认方法中重复代码的问题 private void privateMethod() { System.out.println("接口01中普通私有方法!"); } } interface InterfaceClass02 extends InterfaceClass, InterfaceClass01 { /*当接口继承多个接口时,如果默认方法重复,必须在子类接口中重写该默认方法*/ @Override default void defaultMethod() { } } class Fu { public void defaultMethod() { privateMethod(); System.out.println("Fu中的默认方法!"); } //普通私有方法,解决多个默认方法中重复代码的问题 private void privateMethod() { System.out.println("Fu中普通私有方法!"); } } //当一个类既有父类也有接口时,必须先继承再实现 class Zi /*extends Fu*/ implements InterfaceClass/*, InterfaceClass01*/ { //当实现类实现了多个接口,且默认方法重名时,此时该实现类必须重写该默认方法 /*@Override public void defaultMethod() { }*/ @Override public void abstractMethod() { } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界