175/176接口的默认方法定义和使用
接口的默认方法定义
从java8 开始,接口里允许定义默认方法
格式:
public default 返回值类型 方法名称(参数列表){
方法体
}
备注:接口当中的默认方法,可以解决接口升级的问题
//这些都是抽象方法
public boolean void demo01():
abstract void demo02();
public void demo03();
void demo04();
接口的默认方法使用
接口类
public interface MyInterfaceDefault {
public abstract void method();
//新添加的方法,改成默认方法
public default void methodfefault(){
System.out.println("这是新添加的默认方法");
}
}
实现类
public class MyInterfaceDefaultA implements MyInterfaceDefault{
@Override
public void method() {
System.out.println("a");
}
}
public class MyInterfaceDefaultB implements MyInterfaceDefault{
@Override
public void method() {
System.out.println("b");
}}
测试类
public static void main(String[] args) {
//创建了实现类对象
MyInterfaceDefaultA myInterfaceDefaultA = new MyInterfaceDefaultA();
myInterfaceDefaultA.method();//调用抽象方法,实际运行的事右侧实现类
//调用默认方法,如果实现类当中没有,会向上找借口
myInterfaceDefaultA.methodfefault();//这是新添加的默认方法
System.out.println("=================");
MyInterfaceDefaultB myInterfaceDefaultB = new MyInterfaceDefaultB();
myInterfaceDefaultB.method();
myInterfaceDefaultB.methodfefault();//实现类b覆盖重写了借口的默认方法
}
package insping;
public interface MyInterface {
int add(int x, int y);
// 默认方法
default int multiply(int x, int y) {
return x * y;
}
}
package insping;
public class MyClass implements MyInterface {
@Override
public int add(int x, int y) {
return x+y;
}
}
package insping;
public class Test {
public static void main(String[] args) {
MyInterface intRef = new MyClass();
System.out.println("和 = " + intRef.add(5, 10));
System.out.println("乘 = " + intRef.multiply(5, 10));
}
}

public interface MyInterfaceDefault {
public abstract void methodAbs();
//public abstract void metgodAbs2();
//新添加的方法,改成默认方法
public default void methodDefacult(){
System.out.println("这是新添加的默认方法");
}
}
public class MyInterfaceDefaultA implements MyInterfaceDefault {
@Override
public void methodAbs() {
System.out.println("实现类抽象方法,AAA");
}
}
public class Demo02Interface {
public static void main(String[] args) {
//创建了实现类
MyInterfaceDefaultA a = new MyInterfaceDefaultA();
a.methodAbs();//调用抽象方法,实际运行的是右侧实现类
a.methodDefacult();
}
}
public class Demo02Interface {
public static void main(String[] args) {
//创建了实现类
MyInterfaceDefaultA a = new MyInterfaceDefaultA();
a.methodAbs();//调用抽象方法,实际运行的是右侧实现类
a.methodDefacult();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix