定义两个接口
首先创建两个独立的接口,每个接口声明特定功能的方法(无需实现):
// 接口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的权威实践,符合行业标准。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/46456.html