Java 学习第7天(1) 接口的应用
2015-05-10 10:15
375 查看
1 为什么使用接口
《Java编程思想》:
接口是特殊的抽象类。
interface 不仅仅是一个极度抽象的类,因为它允许人们通过创建一个能够被向上转型为多种基类的类型,来实现某种类似我重继承的特性。
完全解耦。只要一个方法,操作的是类而非接口,那么你就只能使用这个类及其子类。如果你想要将这个方法应用于不在此继承结构中的某个类,那么你就触霉头了。接口可以在很大程度上放宽这种限制,因此,它使我们可以编写可复用性更好的代码。
通过接口可以实现多重继承。
《Java核心技术 卷I:基础知识》
接口与抽象类:使用抽象类表示通用属性存在这样一个问题:每个类只能扩展于一个类。
Java的设计者们选择了不支持多继承,其主要原因是多继承会让语言本身变得非常复杂,效率也会降低。
为了避免这类问题的出现,Java语言利用接口机制来实现多继承的大部分功能。
2 工厂方法模式
举例:
《Java编程思想》:
接口是特殊的抽象类。
interface 不仅仅是一个极度抽象的类,因为它允许人们通过创建一个能够被向上转型为多种基类的类型,来实现某种类似我重继承的特性。
完全解耦。只要一个方法,操作的是类而非接口,那么你就只能使用这个类及其子类。如果你想要将这个方法应用于不在此继承结构中的某个类,那么你就触霉头了。接口可以在很大程度上放宽这种限制,因此,它使我们可以编写可复用性更好的代码。
通过接口可以实现多重继承。
《Java核心技术 卷I:基础知识》
接口与抽象类:使用抽象类表示通用属性存在这样一个问题:每个类只能扩展于一个类。
Java的设计者们选择了不支持多继承,其主要原因是多继承会让语言本身变得非常复杂,效率也会降低。
为了避免这类问题的出现,Java语言利用接口机制来实现多继承的大部分功能。
2 工厂方法模式
举例:
interface Printer{ public void open(); public void print(); public void close(); }
class HpPrinter implements Printer{ public void open(){ System.out.println("HpPrinter open"); } public void print(){ System.out.println("HpPrinter print"); } public void close(){ System.out.println("HpPrinter close"); } }
class CanonPrinter implements Printer{ public void open(){ System.out.println("CanonPrinter open"); } public void print(){ System.out.println("CanonPrinter print"); } public void close(){ this.clean(); System.out.println("CanonPrinter close"); } private void clean(){ System.out.println("CanonPrinter clean"); } }
class EpsonPrinter implements Printer{ public void open(){ System.out.println("EpsonPrinter open"); } public void print(){ System.out.println("EpsonPrinter print"); } public void close(){ System.out.println("EpsonPrinter close"); } }
class PrinterFactory{ //根据用户选择,生成相应的打印机对象 //并且向上转型为Printer类型 //返回值Printer getPrint函数 public static Printer getPrint(int flag){ Printer printer = null; if(flag == 0){ printer = new HpPrinter(); }else if(flag == 1){ printer = new CanonPrinter(); }else if(flag == 2){ printer = new EpsonPrinter(); } return printer; } }
class Main{ public static void main(String[] args){ int flag = 2; Printer printer = PrinterFactory.getPrint(flag); printer.open(); printer.print(); printer.close(); } }
相关文章推荐
- JAVA学习之多态(三)-接口实现多态的应用
- JAVA学习第十四课(接口:implements及其基本应用)
- JAVA学习--接口的应用
- JAVA学习--接口的应用:代理模式
- JAVA学习--接口的应用
- JAVA学习--接口的应用:代理模式
- JAVA学习--接口的应用:工厂方法的设计模式
- Java学习第7天:对象静态的应用和ArrayTool工具类
- JAVA学习第十四课(接口:implements及其基本应用)
- 学习笔记——java中重写和重载的在实际开发的应用场景
- Java到Android小项目(自定义Dialog)来理解接口回调在项目中的应用
- 【Java应用】JavaMail接口应用举例
- java 学习笔记 继承与接口(二)
- Java8 学习笔记--函数式接口与lambda表达式的关系
- webservice实际应用之调用外部系统提供的服务端地址,写java的webservice客户端程序并通过接口给外部系统传数据
- 我的java学习路之循环学习应用demo1九九乘法表
- 我的java学习路之循环学习应用demo2简单数学计算
- java接口的高级应用
- 我的java学习路之数组学习应用demo1猜生日游戏
- 我的java学习路之类和对象学习应用demo2日历