`

软件设计---面向接口编程

阅读更多

                             软件设计---面向接口编程

java中面向接口编程应用十分广泛,在了解面向接口编程之前,必须先知道什么是里氏代换原则。

里氏代换原则(Liskov Substitution Principle, LSP)所有引用基类(父类)的地方必须能透明地使用其子类的对象。简单的说就是一个类可以说成是它的父类,而他的父类却不可以说成是它的子类。

举个例子:

 

//汽车接口
Interface Car{
}
//奔驰汽车
class BenChiCar implemnts Car{
}
//宝马汽车
class BaoMaiCar implemnts Car{
}

 奔驰和宝马都实现了Car接口,可以说奔驰和宝马都是汽车,而不能说汽车就是奔驰或宝马,因为还有其他品牌的汽车

 

如果想详细了解历史代换原则,可以看这篇博客http://blog.csdn.net/lovelion/article/details/7540445,写的很好,很详细

 

这些都了解后,就可以谈谈面向接口编程了,还是上面的例子

//汽车接口
Interface Car{
      void drive();
}
//奔驰汽车类
class BenChiCar implemnts Car{
      @Override
      void drive(){
           System.out.println("奔驰开动了");
      }
}
//宝马汽车类
class BaoMaiCar implemnts Car{
      @Override
      void drive(){
           System.out.println("宝马开动了");
      }
}
//测试类
class Test{
      Car car1=new BenChiCar();
      car1.drive();
      Car car2=new BaoMaCar();
      car2.drive();
}

打印出来的结果:奔驰开动了
               宝马开动了

 

这就是面对接口编程的优点。
假设还有其它类实现了接口Car:xxCar
对应的drive方法实现效果是://输出 XXCar开动了

...以此类推...

当你使用Car car = new XXCar()时,你不用关心这里的XX到底是什么类(BenChiCar,BaoMaCar,...),
也不用关心到底他们输出了什么。你只要知道,他们都实现了Car接口,即他们都实现了void drive()
这个方法。那么你都可以调用 car.drive() 来执行该方法。

 

 

 

 

 

 

分享到:
评论

相关推荐

    设计模式:可复用面向对象软件的基础--详细书签版

     另外,这也不是一篇高级专题技术论文,而是一本关于设计模式的书,它描述了在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案。设计模式捕获了随时间进化与发展的问题的求解方法,因此它们并不是人们从...

    Java面向对象软件开发

    1-面向对象软件开发概述;2-Java语言概述;3-java语言基础;4-面向对象程序设计1;5-面向对象程序设计2;6-工具类与算法;7-图形用户界面设计与实现;8-Java高级编程1(异常处理);8-Java高级编程2(多线程);8-Java高级...

    设计模式可复用面向对象软件的基础

    另外,这也不是一篇高级专题技术论文,而是一本关于设计模式的书,它描述了在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案。设计模式捕获了随时间进化与发展的问题的求解方法,因此它们并不是人们从...

    Java课程设计-21点小游戏.docx

    通过这次设计,掌握了以下内容:面向对象技术中的继承与多态(重载和覆盖)机制、各种修饰符的使用类、包、接口的定义与使用。常用工具类与算法的实现(数组、向量、字符串、链表),java.awt、javax.swing中常用...

    基于面向对象编程的PC-PLC以太网通信接口软件设计.pdf

    #资源达人分享计划#

    Java课程设计-21点小游戏(1).docx

    通过这次设计,掌握了以下内容:面向对象技术中的继承与多态(重载和覆盖)机制、各种修饰符的使用类、包、接口的定义与使用。常用工具类与算法的实现(数组、向量、字符串、链表),java.awt、javax.swing中常用...

    Java课程设计-21点小游戏(2).docx

    通过这次设计,掌握了以下内容:面向对象技术中的继承与多态(重载和覆盖)机制、各种修饰符的使用类、包、接口的定义与使用。常用工具类与算法的实现(数组、向量、字符串、链表),java.awt、javax.swing中常用...

    嵌入式系统--体系结构.编程与设计.part1

    单处理器和多处理器系统的程序建模和软件设计实践; 同时涵盖两种实时操作系统——mC/OS-II和VxWorks; 提供了关于消费电子产品、通信、汽车电子产品和片上安全事务系统的案例研究,同时阐述了RTOS编程原理; 每章...

    DSP接口电路设计与编程

    详细论述了DSP与多种外围接口电路的设计方法,包括各种存储器、模数和数模转换电路、异步串行接口、地址/数据复用总线、扩展I/O、CPCI总线,以及相关的软件编程和调试方法,还介绍了高速数字电路、数模混合电路的...

    2005-2009软件设计师历年真题

     •软件设计方法(结构化设计方法、Jackson方法、Warnier方法、面向对象设计方法)  •程序设计(结构化程序设计、面向对象程序设计)  • 软件测试的原则与方法  • 软件质量(软件质量特性、软件质量控制)  ...

    基于Java面向对象程序设计课程报告.doc.doc

    本设计是为检验面向对象程序设计课程的知识运用而进行的实践,其 主要目的是采用面向对象的思想,独立完成程序的各个过程,并在实践中应用学到的关 于Java类与对象,接口,包,异常处理,多线程,事件处理及各类流的...

    精通Windows.API-函数、接口、编程实例.pdf

    13.1 GDI编程接口概述 379 13.1.1 Windows GDI的功能 379 13.1.2 链接库与头文件 380 13.2 设备上下文(DC)、输出操作与图形对象 380 13.2.1 设备上下文类型与关联设备 380 13.2.2 图形对象的作用及与DC的...

    设计模式可复用面向对象软件的基础(中文版)

    另外,这也不是一篇高级专题技术论文,而是一本关于设计模式的书,它描述了在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案。设计模式捕获了随时间进化与发展的问题的求解方法,因此它们并不是人们从...

    软件工程-理论与实践(许家珆)习题答案

    A) 软件需求 B) 软件设计 C) 风险分析 D) 软件实 现 5. 下列属于面向对象开发方法的是(A B C D)。 A) Booch B) UML C) Coad D) OMT 6. 软件危机的主要表现是(B D)。 A) 软件成本太高 B) 软件产品的质量...

    基于TCP的服务器客户端程序设计.doc

    通过设计面向连接的数据流传输服务程序,加深对面向连接的服务程序工作流程和基本 框架的理解。 实验设计要求 1)任选一种编程语言,编程实现面向连接的客户/服务器程序,客户端、服务器端分 别编程; 2) 编程要...

    java设计模式(设计实例从面向对象的设计中精选出23个设计模式)

    另外,这也不是一篇高级专题技术论文,而是一本关于设计模式的书,它描述了在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案。设计模式捕获了随时间进化与发展的问题的求解方法,因此它们并不是人们从...

    毕业设计---基于java的软件资源库的实现(后端).zip

    Java消除了某些编程错误,使得用它写可靠软件相当容易。 Java是一个强类型语言,它允许扩展编译时检查潜在类型不匹配问题的功能。Java要求显式的方法声明,它不支持C风格的隐式声明。这些严格的要求保证编译程序能...

    VC++ 编程指南 windows编程和面向对象技术

    第一课 Windows编程和面向对象技术 -----Microsoft Windows是一个基于Intel x86微处理芯片的个人计算机上的具有图形用户接口的多任务和多窗口的操作系统,它是对MS-DOS操作系统的扩展和延伸。与MS-DOS操作系统相比...

    Windows编程和面向对象技术

    由于Windows具有以上突出优点,Windows平台上的软件开发和程序设计已成主流。这一讲首先介绍Windows发展简史,然后分析Windows操作系统的特点以及Windows程序设计的关键概念,最后介绍Windows程序设计的过程及开发...

    课程设计----基于于JAVA的记事本编辑器的设计与实现.doc

    计算机工程学院 课程设计报告 设计名称: 面向对象课程设计 选题名称: 文本编辑器的设计与实现 姓 名: 学 号: 专业班级: D软件081 系 (院): 计算机工程学院 设计时间: 2010.6.14~2010.6.27 设计地点: 软件...

Global site tag (gtag.js) - Google Analytics