Java接口的static方法和default方法
一、static方法#
接口中的static方法与类中的static方法很像,都是直接调用:interface名.static方法,静态方法必须写函数体,否则会报错
创建接口,定义静态方法:
public interface static_interface {
static void print(){
System.out.println("我是接口中的静态方法");
}
}
实现接口并调用静态方法:
public class Test implements static_interface{
public static void main(String[] args) {
static_interface.print();
}
}
二、default方法#
接口中的default方法表示接口中默认的方法,必须写函数体,这种默认方法在实现类中不需要重写即可直接使用。
创建接口,定义default方法
public interface default_interface {
default void print(){
System.out.println("我是接口中的default方法");
}
}
实现接口并调用default方法
public class Test2 implements default_interface{
public static void main(String[] args) {
new Test2().print();
}
}
三、default的注意事项#
-
实现类中default方法可以不重写直接使用
-
如果一个类同时实现了多个接口,并且这些接口中有相同的default方法,那么我们必须重写default方法才可以使用
原理很简单,那么多相同的default方法,不重写程序怎么会知道运行哪个呢。 -
如果一个子类继承了父类,父类中有a()方法,同时这个子类又实现了一个接口,这个接口中也有a()方法(被default修饰),那么子类在调用a()方法的时候,会调用父类中的a()方法,而不调用接口中的a()方法
-
一个接口中可以写多个default
### 四、接口与抽象类区别
接口已经越来越向类靠近了,所以现在接口和抽象类的区别有:
- 虽然接口和抽象类都不能被实例化,但是抽象类可以有构造器,接口没有构造器
- 抽象类单继承(只能继承一个类),接口多继承(能继承多个接口)
- 抽象类中方法可以有public、protected、默认(包)甚至private范围的方法,接口只能有public范围的方法(即使是default也是public范围的)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!