面向对象编程(OOP)接口内置函数实现免重写调用的理论问题
面向任意面向对象编程语言(Java、C#、TypeScript等)的实验/理论问题
结论
你描述的「接口内直接编写方法实现、实现类无需重写即可直接调用」的特性在多数主流面向对象编程语言中均已支持,不属于纯理论设想。
各语言实现方案
- Java:从Java 8版本开始引入「默认方法」特性,在接口方法前添加
default关键字即可编写实现逻辑,所有实现该接口的类如果没有主动重写该方法,就会直接使用接口中定义的默认实现。
你给出的示例代码修正为可运行的Java语法如下:
interface Test { // 用default关键字标记默认方法,指定返回值为void default void foo() { System.out.println("Test log."); } } class Class1 implements Test { public Class1() {} } class Class2 implements Test { public Class2() {} } class Main { public static void main(String[] args) { Class1 f1 = new Class1(); Class2 f2 = new Class2(); f1.foo(); // 输出Test log. f2.foo(); // 输出Test log. } }
- C#:从C# 8.0版本开始支持接口默认方法,语法和Java类似,无需额外关键字,直接在接口内编写方法实现即可。
- TypeScript:TypeScript的接口本身仅用作类型标注,编译后会被擦除,不支持直接写实现逻辑,但可以通过混入(Mixin)模式实现类似效果,让多个类共享同一套方法实现无需重复编码。
设计目的
这个特性的核心作用就是解决接口升级的兼容性问题:如果要给已经被大量类实现的旧接口新增方法,不需要挨个修改所有实现类补充实现,直接给接口加默认方法即可,不会影响原有代码的运行。
内容的提问来源于stack exchange,提问作者Wassim Tahraoui
相关产品推荐
相关产品推荐

