Java Interfaces And Inheritance
2014-04-09 00:00
176 查看
Interfaces
软件工程中一个重要的场景,不同组的程序员达成一份如何将各自软件交互的“契约”。每个组在不知道其他组所写代码情况下编写它们的代码。通常来说,接口就像“契约”。
例如,在未来社会,计算机控制的机器人汽车运输乘客穿过城市的街道。汽车制造商编写操作汽车的停止,启动,加速,左转等软件,另一种工业集团,电子导航仪器制造商,使用计算机系统接受GPS的位置数据和交通条件的无线传输,并利用这些信息来驱动汽车。
汽车制造商必须发布行业标准接口指明什么方法可以用来使汽车移动(从任何厂商的任何汽车)。指导制造商可以编写软件来调用接口中描述的方法来控制汽车。无论哪个工业集团不需要知道其他组的怎么实现。
Java中的接口
在java编程中,一个接口是一个引用类型,类似于一个class,它仅能包含常量、方法签名、默认方法、静态方法和嵌套类型。方法体的存在仅仅在默认方法和静态方法。接口不能实例化,只能通过class实现or通过其他接口继承。
使用一个接口,你编写一个class实现该接口。当一个可实例化的class实现了该接口,它提供接口中声明的每个方法体。
接口APIs
机器人汽车的例子展示了一个接口当做一个行业标准API。APIs也是常见的商业软件产品。如,
封装数字图像的处理方法,出售给最终用户图形的公司。图像处理公司实现一个接口并对其客户公开,最终用户图形公司使用接口中方法签名和返回类型调用图像处理的接口。
变化接口
试图预测你接口的所有用途,一开始将它指定完整。如你想给一个接口添加额外方法,你有如下选择:
a、可以创建一个扩展接口,用户代码可以选择继续使用旧接口或升级到新的接口
b、将你的新方法作为默认方法,用户不需要修改or编译额外方法的类
Inheritance
继承概念简单但功能强大,当你想创建一个新的类并且已存在一个类包含一些代码,那么你可以从已存在的类派生新类,你能重用已存在类的字段和方法,而不用自己写和debug。
子类从父类中继承字段、方法、嵌套类所有成员,构造器不属于成员,所以不能被子类继承,但在子类中可以调用父类构造器。
软件工程中一个重要的场景,不同组的程序员达成一份如何将各自软件交互的“契约”。每个组在不知道其他组所写代码情况下编写它们的代码。通常来说,接口就像“契约”。
例如,在未来社会,计算机控制的机器人汽车运输乘客穿过城市的街道。汽车制造商编写操作汽车的停止,启动,加速,左转等软件,另一种工业集团,电子导航仪器制造商,使用计算机系统接受GPS的位置数据和交通条件的无线传输,并利用这些信息来驱动汽车。
汽车制造商必须发布行业标准接口指明什么方法可以用来使汽车移动(从任何厂商的任何汽车)。指导制造商可以编写软件来调用接口中描述的方法来控制汽车。无论哪个工业集团不需要知道其他组的怎么实现。
Java中的接口
在java编程中,一个接口是一个引用类型,类似于一个class,它仅能包含常量、方法签名、默认方法、静态方法和嵌套类型。方法体的存在仅仅在默认方法和静态方法。接口不能实例化,只能通过class实现or通过其他接口继承。
使用一个接口,你编写一个class实现该接口。当一个可实例化的class实现了该接口,它提供接口中声明的每个方法体。
接口APIs
机器人汽车的例子展示了一个接口当做一个行业标准API。APIs也是常见的商业软件产品。如,
封装数字图像的处理方法,出售给最终用户图形的公司。图像处理公司实现一个接口并对其客户公开,最终用户图形公司使用接口中方法签名和返回类型调用图像处理的接口。
变化接口
试图预测你接口的所有用途,一开始将它指定完整。如你想给一个接口添加额外方法,你有如下选择:
a、可以创建一个扩展接口,用户代码可以选择继续使用旧接口或升级到新的接口
b、将你的新方法作为默认方法,用户不需要修改or编译额外方法的类
Inheritance
继承概念简单但功能强大,当你想创建一个新的类并且已存在一个类包含一些代码,那么你可以从已存在的类派生新类,你能重用已存在类的字段和方法,而不用自己写和debug。
子类从父类中继承字段、方法、嵌套类所有成员,构造器不属于成员,所以不能被子类继承,但在子类中可以调用父类构造器。
相关文章推荐
- When to use comparable and comparator interfaces in java
- Java学习笔记(13)Abstract Classes and Interfaces
- Item 22: Prefer Defining and Implementing Interfaces to Inheritance(Effective C#)
- Java-Choose between Composition and Inheritance
- thinking in java(V)--composition and inheritance
- Default Methods in Java 8 and Multiple Inheritance
- Effective Java 17 Design and document for inheritance or else prohibit it
- thinking in java(VII)--interfaces and inner classes
- Thinking in Java(8)-inheritance and cleanup
- Thinking in Java(6)-combinning composition and inheritance
- 设计: ListView 接口,and the missing read-only interfaces in java collection framework
- Effective C#之19:Prefer Defining and Implementing Interfaces to Inheritance
- 报错:java.util.Map is an interface, and JAXB can't handle interfaces.
- 设计: ListView 接口,and the missing read-only interfaces in java collection framework
- 26.Difference between protocol in objective c and interfaces in java?
- Multiple Inheritance in Java and Composition vs Inheritance
- Effective C# Item19: Prefer Defining and Implementing Interfaces to Inheritance
- HCI Beyond the GUI: Design for Haptic, Speech, Olfactory, and Other Nontraditional Interfaces
- AES For Delphi And Java, AES/ECB/PKCS5Padding(二)
- 计算Chidamber and Kemerer指标的两个Java工具简介