Java中default方法的用途
简介
在Java 8中,引入了一种新的方法类型:default方法。default方法是指在接口中定义的具有默认实现的方法。它解决了接口的一个局限性,即当向已有的接口添加新方法时,实现该接口的所有类都需要实现该方法。default方法的出现使得接口在添加新方法时变得更加灵活。
default方法的流程
下面是使用default方法的流程,可以用一个表格来展示。
步骤 | 动作 |
---|---|
1 | 定义一个接口 |
2 | 在接口中声明一个default方法 |
3 | 实现该接口的类可以选择性地重写default方法 |
4 | 使用实现类对象调用default方法 |
具体步骤和代码示例
步骤1:定义一个接口
首先,我们需要定义一个接口,例如Person
接口,用于描述人的行为。
public interface Person {
void sayHello(); // 声明一个抽象方法
}
步骤2:在接口中声明一个default方法
接下来,在接口中声明一个default方法,例如default void sayGoodbye()
,该方法是接口的默认实现。
public interface Person {
void sayHello(); // 声明一个抽象方法
default void sayGoodbye() {
System.out.println("Goodbye!");
}
}
步骤3:实现该接口的类可以选择性地重写default方法
现在,让我们创建一个实现类Student
,它实现了Person
接口。如果不重写sayGoodbye()
方法,将使用默认实现。
public class Student implements Person {
@Override
public void sayHello() {
System.out.println("Hello!");
}
}
如果需要自定义sayGoodbye()
方法的实现,可以在实现类中重写它。
public class Student implements Person {
@Override
public void sayHello() {
System.out.println("Hello!");
}
@Override
public void sayGoodbye() {
System.out.println("See you later!");
}
}
步骤4:使用实现类对象调用default方法
最后,我们可以创建Student
类的对象,并调用sayHello()
和sayGoodbye()
方法。
public class Main {
public static void main(String[] args) {
Student student = new Student();
student.sayHello(); // 输出:Hello!
student.sayGoodbye(); // 输出:Goodbye! 或 See you later!
}
}
注意,如果sayGoodbye()
方法在实现类中被重写,将使用实现类的自定义实现;否则,将使用接口中的默认实现。
总结
通过使用default方法,我们可以在接口中添加新的方法而不破坏已有的实现类。实现类可以选择性地重写default方法,以适应自己的需求。default方法的引入使得接口的演化变得更加灵活和方便。