个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~
个人主页:.29.的博客
学习社区:进去逛一逛~
共同点
:
default
关键字在接口中定义默认方法在 Java 8 及以后的版本中,引入了默认方法(Default Methods) 的概念,允许在接口中使用 default
关键字为接口方法提供默认的实现。这样可以在不破坏现有代码的基础上向接口中添加新的方法,而不需要修改所有实现该接口的类。同样,抽象类也可以拥有具有默认实现的方法。
下面是一个简单的例子,演示了在接口和抽象类中使用 default
关键字声明默认实现的方法:
在这个例子中,
MyInterface
接口和MyAbstractClass
抽象类都定义了一个抽象方法
abstractMethod
和一个默认方法defaultMethod
。然后,
MyClass
类实现了这个接口并继承了抽象类,实现了抽象方法,并且可以选择是否重写默认方法。在
main
方法中,创建了MyClass
的实例,并调用了抽象方法和默认方法,展示了默认方法的使用。
// 接口
interface MyInterface {
// 抽象方法
void abstractMethod();
// 默认方法
default void defaultMethod() {
System.out.println("This is a default implementation of MyInterface.");
}
}
// 抽象类
abstract class MyAbstractClass {
// 抽象方法
abstract void abstractMethod();
// 默认方法
default void defaultMethod() {
System.out.println("This is a default implementation of MyAbstractClass.");
}
}
// 具体类实现接口和继承抽象类
class MyClass extends MyAbstractClass implements MyInterface {
// 实现抽象方法
@Override
void abstractMethod() {
System.out.println("This is the implementation of abstractMethod in MyClass.");
}
// MyClass 可以选择重写默认方法
@Override
public void defaultMethod() {
System.out.println("This is a overridden default implementation in MyClass.");
}
}
public class DefaultMethodExample {
public static void main(String[] args) {
// 创建 MyClass 实例
MyClass myClass = new MyClass();
// 调用抽象方法和默认方法
myClass.abstractMethod();
myClass.defaultMethod();
}
}
区别
:
public static final
修饰的常量,不能被修改且必须有初始值;抽象类可以包含实例变量,成员变量默认 default,可在子类中被重新定义,也可被重新赋值。