Java中interface的default和static方法
Java中interface的default和static方法
完整代码及其运行结果
package demo;
public class StaticandDefaultMethod {
public static void main(String[] args) {
Interface I = new SubClass();
SuperClass SuperC = new SubClass();
SubClass SubC = new SubClass();
System.out.println("============调用d()============");
I.d();
SuperC.d();
SubC.d();
System.out.println("\n===========实例调用s()===========");
// I.s();
SuperC.s();
SubC.s();
System.out.println("\n===========直接调用s()===========");
Interface.s();
SuperClass.s();
SubClass.s();
}
}
//接口
interface Interface{
default void d() {
/**
* 接口的default方法d()
*/
System.out.println("Interface.d()");
}
static void s() {
/**
* 接口的static方法s()
*/
System.out.println("Interface.s()");
}
static void s1() {
}
}
//父类
abstract class SuperClass{
static void s() {
/**
* 父类的static方法s()
*/
System.out.println("SuperClass.s()");
}
void d() {
/**
* 父类的d()方法
*/
System.out.println("SuperClass.d()");
}
}
class SubClass extends SuperClass implements Interface{
@Override
public void d() {
/**
* 若父类与接口有同名方法,则继承优先级父类高于接口
* 同时default是public,若父类同名方法不是public,则子类需实现一个public的同名方法
*/
System.out.print("SubClass.d() and ");
super.d();
}
// @Override
/**
* 子类不能继承接口的static方法,可以继承、不能覆写父类的static方法
* The method s() of type SubClass must override or implement a supertype method
*/
static void s() {
System.out.println("SubClass.s()");
}
}
The method s() of type SubClass must override or implement a supertype method
标签:
java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)