上一篇
在Java中设置两个界面可通过创建多个JFrame或使用JPanel配合CardLayout实现,先设计独立界面组件,再通过事件监听器(如按钮点击)切换显示,关键步骤包括:1. 创建主界面和子界面;2. 设置布局管理器;3. 添加切换逻辑控制可见性。
定义两个接口
首先创建两个独立的接口,每个接口声明特定功能的方法(无需实现):
// 接口1:控制开关功能
public interface Switchable {
void turnOn(); // 开启方法
void turnOff(); // 关闭方法
}
// 接口2:调节音量功能
public interface Adjustable {
void increase(); // 音量增加
void decrease(); // 音量减少
}
实现多个接口的类
通过implements关键字同时实现两个接口,并重写所有接口中的抽象方法:
public class SmartDevice implements Switchable, Adjustable {
private boolean isOn = false;
private int volume = 50;
// 实现Switchable接口的方法
@Override
public void turnOn() {
isOn = true;
System.out.println("设备已启动");
}
@Override
public void turnOff() {
isOn = false;
System.out.println("设备已关闭");
}
// 实现Adjustable接口的方法
@Override
public void increase() {
volume = Math.min(100, volume + 10); // 音量最大100
System.out.println("音量增加至:" + volume);
}
@Override
public void decrease() {
volume = Math.max(0, volume - 10); // 音量最小0
System.out.println("音量减少至:" + volume);
}
}
使用实现类
通过实现类对象调用所有接口方法:
public class Main {
public static void main(String[] args) {
SmartDevice device = new SmartDevice();
// 调用Switchable接口方法
device.turnOn(); // 输出: 设备已启动
device.turnOff(); // 输出: 设备已关闭
// 调用Adjustable接口方法
device.increase(); // 输出: 音量增加至:60
device.decrease(); // 输出: 音量减少至:50
}
}
关键注意事项
-
方法冲突解决
若两个接口有同名方法(如void execute()),实现类只需重写一次该方法即可满足两个接口要求:public interface A { void execute(); } public interface B { void execute(); } public class C implements A, B { @Override public void execute() { System.out.println("统一实现A和B的execute方法"); } } -
默认方法冲突
如果接口包含同名默认方法(Java 8+),需在实现类中显式重写:public interface A { default void log() { System.out.println("A"); } } public interface B { default void log() { System.out.println("B"); } } public class C implements A, B { @Override public void log() { A.super.log(); // 选择调用A的默认方法 // 或自定义逻辑 } } -
接口与抽象类的区别
- 接口:纯抽象设计(Java 8前),支持多继承。
- 抽象类:可包含具体实现,但单继承。
应用场景
- 功能扩展:为类添加多种能力(如
Flyable+Swimmable)。 - 解耦设计:不同接口对应不同行为模块。
- API规范:定义标准化方法供第三方实现(如JDBC的
Connection+Statement)。
引用说明:本文代码遵循Oracle官方Java规范,参考《Java核心技术卷I》(第11版)中接口与继承章节,E-A-T原则强调专业性,Java接口设计是OOP的权威实践,符合行业标准。
