参考答案:
接口是面向对象编程中的一种抽象机制,用来定义对象之间的一种契约或规范。
定义:在 Java 中,接口(interface
)是一个包含方法声明(而非实现)和常量的集合。它是纯抽象的,没有任何具体实现。
语法:
1public interface MyInterface { 2 void method1(); 3 void method2(); 4}
实现:类通过 implements
关键字来实现接口,并提供具体的方法实现。
1public class MyClass implements MyInterface { 2 @Override 3 public void method1() { 4 System.out.println("Method1 implemented"); 5 } 6 @Override 7 public void method2() { 8 System.out.println("Method2 implemented"); 9 } 10}
特性:
public abstract
,实现类必须实现这些方法。default
)和静态方法。解耦性和扩展性
例子:
1interface Payment { 2 void processPayment(); 3} 4 5class CreditCardPayment implements Payment { 6 @Override 7 public void processPayment() { 8 System.out.println("Processing credit card payment"); 9 } 10} 11 12class PayPalPayment implements Payment { 13 @Override 14 public void processPayment() { 15 System.out.println("Processing PayPal payment"); 16 } 17}
客户端代码只依赖于接口 Payment
,因此可以很方便地替换不同的支付实现。
支持多态
例子:
1Payment payment = new CreditCardPayment(); 2payment.processPayment(); // 调用的是 CreditCardPayment 的实现 3 4payment = new PayPalPayment(); 5payment.processPayment(); // 调用的是 PayPalPayment 的实现
实现多继承
例子:
1interface A { void methodA(); } 2interface B { void methodB(); } 3 4class MyClass implements A, B { 5 @Override 6 public void methodA() { System.out.println("Method A"); } 7 @Override 8 public void methodB() { System.out.println("Method B"); } 9}
支持依赖注入
例子:
1class OrderProcessor { 2 private Payment payment; 3 public OrderProcessor(Payment payment) { 4 this.payment = payment; 5 } 6 public void processOrder() { 7 payment.processPayment(); 8 } 9} 10 11// 测试环境中使用 Mock 实现 12class MockPayment implements Payment { 13 @Override 14 public void processPayment() { 15 System.out.println("Mock payment processing"); 16 } 17}
支持接口回调
例子:
1interface OnClickListener { 2 void onClick(); 3} 4 5class Button { 6 private OnClickListener listener; 7 public void setOnClickListener(OnClickListener listener) { 8 this.listener = listener; 9 } 10 public void click() { 11 if (listener != null) listener.onClick(); 12 } 13} 14 15class MyApp implements OnClickListener { 16 @Override 17 public void onClick() { 18 System.out.println("Button clicked!"); 19 } 20}
最近更新时间:2024-12-10