JAVA 接口组成更新
接口组成更新概述
(1)常量:public static final
(2)抽象方法:public abstract
(3)默认方法(Java 8) 有方法体
(4)静态方法(Java 8) 有方法体
(5)私有方法(Java 9) 有方法体
接口中默认方法
格式:
1 public default 返回值类型 方法名(参数列表) { }
范例:
1 public default void show3() { }
注意事项:
-
- 默认方法不是抽象方法,所以不强制被重写。但是可以被重写,重写的时候去掉default关键字
- public可以省略,default不能省略
接口中静态方法
格式:
1 public static 返回值类型 方法名(参数列表) { }
范例:
1 public static void show() { }
注意事项:
-
- 静态方法只能通过接口名调用,不能通过实现类名或者对象名调用
- public可以省略,static不能省略
接口中私有方法
私有方法产生原因:
Java 9中新增了带方法体的私有方法,这其实在Java 8中就埋下了伏笔:Java 8允许在接口中定义带方法体的默认方法和静态方法。这样可能就会引发一个问题:当两个默认方法或者静态方法中包含一段相同的代码实现时,程序必然考虑将这段实现代码抽取成一个共性方法,而这个共性方法是不需要让别人使用的,因此用私有给隐藏起来,这就是Java 9增加私有方法的必然性
定义格式:
1 格式1: 2 private 返回值类型 方法名(参数列表) { } 3 范例1: 4 private void show() { }
1 格式2: 2 private static 返回值类型 方法名(参数列表) { } 3 范例2: 4 private static void method() { }
例子:
1 接口: 2 public interface myInterface { 3 4 //默认方法: 可以调用私有的静态方法和非静态方法 5 default void show1(){ 6 System.out.println("show1();开始"); 7 // System.out.println("java初级工程师"); 8 // System.out.println("java中级工程师"); 9 // System.out.println("java高级工程师"); 10 pri1();//私有非静态方法 11 System.out.println("show1();结束"); 12 System.out.println("--------"); 13 } 14 15 default void show2(){ 16 System.out.println("show2();开始"); 17 // System.out.println("java初级工程师"); 18 // System.out.println("java中级工程师"); 19 // System.out.println("java高级工程师"); 20 pri2(); //私有静态方法 21 System.out.println("show2();结束"); 22 System.out.println("--------"); 23 } 24 25 //静态方法: 只能调用私有的静态方法 26 static void method1(){ 27 System.out.println("method1();开始"); 28 // System.out.println("java初级工程师"); 29 // System.out.println("java中级工程师"); 30 // System.out.println("java高级工程师"); 31 pri2(); //私有静态方法 32 System.out.println("method1();结束"); 33 System.out.println("--------"); 34 } 35 36 static void method2(){ 37 System.out.println("method2();开始"); 38 // System.out.println("java初级工程师"); 39 // System.out.println("java中级工程师"); 40 // System.out.println("java高级工程师"); 41 //pri1(); //私有静态方法 42 System.out.println("method2();结束"); 43 } 44 45 //私有方法(非静态) 46 private void pri1(){ 47 System.out.println("java初级工程师"); 48 System.out.println("java中级工程师"); 49 System.out.println("java高级工程师"); 50 } 51 52 //私有方法(静态) 53 private static void pri2(){ 54 System.out.println("java初级工程师"); 55 System.out.println("java中级工程师"); 56 System.out.println("java高级工程师"); 57 } 58 }
1 接口实例化对象: 2 public class myInterfaceImpl implements myInterface{ 3 //此处不用重写方法 4 }
1 测试类: 2 public class myInterfaceDemo { 3 public static void main(String[] args) { 4 //多态的形式创建对象 5 myInterface my=new myInterfaceImpl(); 6 7 my.show1(); 8 my.show2(); 9 10 //静态方法直接用,接口名调用 11 myInterface.method1(); 12 } 13 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY