Java日志第18天 2020.7.23
接口
接口是一种公共规范标准。
接口是一种引用数据类型,最重要的内容是抽象方法
使用interface关键字
接口当中的抽象方法,修饰符必须是两个关键字,public、abstract,两个关键字个选择性省略。
public interface MyInterface { public abstract void method1(); //省略abstract public void method2(); //省略public abstract void method3(); }
接口使用步骤
1.接口不能直接使用,必须有一个“实现类”来实现接口。
格式:
public class 实现类名称 implements 接口名称{
//方法体
}
2.接口的实现必须覆盖重写接口中所有的抽象方法
public class MyInterfaceImpl implements MyInterface { @Override public void method1() { System.out.println("实现方法1"); } @Override public void method2() { System.out.println("实现方法2"); } @Override public void method3() { System.out.println("实现方法3"); } }
3.创建实现类的对象进行使用。
public class Demo01MyInterface { public static void main(String[] args) { MyInterfaceImpl myInterface = new MyInterfaceImpl(); myInterface.method1(); myInterface.method2(); myInterface.method3(); } }
结果如下
*如果实现类中并没有覆盖重写接口中所有的方法,这个类是抽象类
接口定义默认方法
Java 8之后,允许接口定义默认方法,格式如下:
public default 返回值类型 方法名称(参数列表) { 方法体 }
默认方法可以解决接口升级问题
当一个接口有很多的实现类,此时需要定义一个新的方法,不需要在各个需要类中编写方法,而在接口中定义默认方法即可实现。方便了接口的升级。
public interface MyInterface { public abstract void method1(); //省略abstract public void method2(); //省略public abstract void method3(); public default void method4(){ System.out.println("实现方法4"); } }
public class Demo01MyInterface { public static void main(String[] args) { MyInterfaceImpl myInterface = new MyInterfaceImpl(); myInterface.method1(); myInterface.method2(); myInterface.method3(); myInterface.method4(); } }
结果如下
如果在实现类中重写定义默认方法,调用是会调用实现类方法
public class MyInterfaceImplB implements MyInterface { @Override public void method1() { System.out.println("实现方法1"); } @Override public void method2() { System.out.println("实现方法2"); } @Override public void method3() { System.out.println("实现方法3"); } @Override public void method4(){ System.out.println("实现类实现方法4"); } }
public class Demo01MyInterface { public static void main(String[] args) { MyInterfaceImpl myInterface = new MyInterfaceImpl(); myInterface.method1(); myInterface.method2(); myInterface.method3(); myInterface.method4(); System.out.println("================"); MyInterfaceImplB myInterface2 = new MyInterfaceImplB(); myInterface2.method1(); myInterface2.method2(); myInterface2.method3(); myInterface2.method4(); } }
结果如下
定义静态方法
Java 8之后,接口当中允许定义静态方法,格式如下:
public static 返回值类型 方法名称( 参数列表 ) { 方法体 }
public interface MyInterface { //定义静态方法 public static void method(){ System.out.println("实现静态方法"); } }
public class Demo01MyInterface { public static void main(String[] args) { //报错! // MyInterfaceImpl myInterface = new MyInterfaceImpl(); // myInterface.method5(); MyInterface.method(); } }
注意:不能通过接口实现类的对象来调用接口的静态方法,需要通过接口名称直接调用静态方法。
定义私有方法
Java 9之后,接口允许定义私有方法
1.普通私有方法:解决多个默认方法之间重复代码问题,格式如下:
private 返回值类型 方法名称
( 参数列表 ) { 方法体 }
2.静态私有方法:解决多个静态方法之间重复代码问题,格式如下:
private static 返回值类型 方法名称 ( 参数列表 ) { 方法体 }
public interface MyInterface { public default void methodA(){ System.out.println("A"); } public default void methodB(){ System.out.println("B"); } //私有方法 private void method(){ System.out.print("实现方法"); } }
定义成员变量
必须使用public static final三个关键字,所以其实是一个常量,一旦赋值便不可修改。
注意事项:
1.三个关键字可以省略,省略与否效果都是一样的。
2.接口中的常量必须赋值。
3.接口中常量名称全部大写,用下划线分隔单词
使用方法:
接口名称.成员变量名称
public interface MyInterface { public static final int NUM_OF_CLASS = 10; int NUM_OF_SEAT = 5; }
public class Demo01MyInterface { public static void main(String[] args) { System.out.println("The number of class is "+MyInterface.NUM_OF_CLASS); System.out.println("The number of seat is "+MyInterface.NUM_OF_SEAT); } }
结果如下:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南