接口
- 接口是一个对象中可以被另一个对象调用的一组方法
- 一个对象可以有多个接口
- 类型是一个对象的特殊接口
- 不同的对象可以有相同的类型,一个对象可以有多种不同的类型
- 一个对象只有通过它的接口才能被其他对象知晓
- 接口是可插拔的关键
实现继承和接口继承
- 实现继承(类继承)------ 一个对象的实现定义在另一个对象的实现的基础上
- 接口继承 ------ 描述了一个对象什么时候可以代替另一个对象使用
- Java为接口继承提供了专用的结构 - interface
- Java的接口结构使专注于对象接口的设计更容易实现
接口的优缺点
- 优点
- 客户端不知道他们所使用对象的具体类型
- 一个对象可以被另一个对象轻易地替换
- 对象不需要硬连接到一个特殊类的对象,因此增加了灵活性
- 松耦合
- 增加了重用的机会
- 增加了组合的机会,因为被包含的对象可以被实现了特定接口的其他对象替换
- 缺点
- 某种程度上增加了设计的复杂性
接口实例
- /**
- * Interface IManeuverable provides the specification
- * for a maneuverable vehicle.
- */
- public interface IManeuverable {
- public void left();
- public void right();
- public void forward();
- public void reverse();
- public void climb();
- public void dive();
- public void setSpeed(double speed);
- public double getSpeed();
- }
- public class Car implements IManeuverable {
- // Code here.
- }
- public class Boat implements IManeuverable {
- // Code here.
- }
- public class Submarine implements IManeuverable {
- // Code here.
- }
/**
* Interface IManeuverable provides the specification
* for a maneuverable vehicle.
*/
public interface IManeuverable {
public void left();
public void right();
public void forward();
public void reverse();
public void climb();
public void dive();
public void setSpeed(double speed);
public double getSpeed();
}
public class Car implements IManeuverable {
// Code here.
}
public class Boat implements IManeuverable {
// Code here.
}
public class Submarine implements IManeuverable {
// Code here.
}
下面的方法只需要知道参数是机动车辆而不需要关心它到底属于哪个类(Car, Boat, Submarine)或者类所在的层次结构。
- public void travel(IManeuverable vehicle) {
- vehicle.setSpeed(35.0);
- vehicle.forward();
- vehicle.left();
- vehicle.climb();
- }
public void travel(IManeuverable vehicle) {
vehicle.setSpeed(35.0);
vehicle.forward();
vehicle.left();
vehicle.climb();
}
总结
使用该原则可以带来更灵活的设计,因为当我们想替换一个类的实现时,不需要改变原来的代码。
本文探讨了接口在编程中的关键作用,如何通过接口设计实现更灵活、可重用的代码结构。重点介绍了接口的定义、实现、继承以及在不同对象之间的应用,特别强调了接口带来的松耦合优势。通过示例代码展示了如何定义和使用接口,以及接口如何简化对象间的交互,同时讨论了接口设计的优缺点。最后总结了接口在实际编程实践中的重要性,以及如何利用接口提升代码质量。



969

被折叠的 条评论
为什么被折叠?



