9.1 实验目的

接口回调是多态的另一种体现,接口回调是指可以把使用某一接口的类创建的对象的引用赋值给该接口声明的接口变量中,那么该接口变量就可以调用被类实现的接口中的方法,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程成为对象功能的接口回调。所谓面向接口编程,是指当设计某种重要的类时,不让该类面向具体的类,而是面向接口,即设计类中的重要数据是接口声明的变量,而不是具体类声明的对象。本实验的目的是掌握接口回调和面向接口编程思想。

9.2 实验要求

小狗在不同环境条件下可能呈现不同的状态,小狗通过调用 cry()方法体现自己的当前的状
态。要求用接口封装小狗的状态。具体要求如下。

• 编写一个接口 DogState,该接口有一个名字为 void showState()的方法。
• 编写 Dog 类,该类中有一个 DogState 接口声明的变量 state。另外,该类有一个 cry()方法,在该方法中让接口 state 回调 showState()方法。即 Dog 对象通过 cry()方法来体现自己目前的状态。
• 编写若干个实现 DogState 接口的类,负责刻画小狗的各种状态。
• 编写主类,在主类中用 Dog 创建小狗,并让小狗调用 cry 方法体现自己的状态。
9.3 实验指导

接口 DogState 规定了状态的方法名称,因此,实现该接口的类,必须具体实现接口中的方法 public void showState()。

9.4 实验实现代码
public interface DogState{public abstract void showState();
}class aState implements DogState{public void showState() {System.out.println("饿了 饿了");}
}class bState implements DogState{public void showState() {System.out.println("困了 困了");}
}class cState implements DogState{public void showState() {System.out.println("抱抱 抱抱");}
}class Dog{private DogState state;public void cry() {state.showState();}public void setState(DogState d) {state = d;}
}public class E {public static void main(String []args) {Dog dog = new Dog();dog.setState(new aState());dog.cry();dog.setState(new bState());dog.cry();dog.setState(new cState());dog.cry();}
}
9.5 实验结果

java实验报告9 面向接口编程相关推荐

  1. Java面向接口编程,低耦合高内聚的设计哲学

    接口体现的是一种规范和实现分离的设计哲学,充分利用接口可以极大的降低程序中各个模块之间的耦合,提高系统的可维护性以及可扩展性. 因此,很多的软件架构设计理念都倡导"面向接口编程"而 ...

  2. Java 面向抽象编程和面向接口编程

    以下内容来自<Java 2实用教程>,主编:耿祥义.张跃平 鉴于面向抽象编程和面向接口编程思维培养的重要性,写此博客巩固. 面向抽象编程: 在设计程序时,经常会使用到abstract类,其 ...

  3. Java中的面向接口编程

    面向接口编程是很多软件架构设计理论都倡导的编程方式,学习Java自然少不了这一部分,下面是我在学习过程中整理出来的关于如何在Java中实现面向接口编程的知识.分享出来,有不对之处还请大家指正. 接口体 ...

  4. java继续_Java中消除实现继续和面向接口编程

    在匆忙之际理清消除实现继续和面向接口编程这样两个大题目可不是一件轻易的事情,尤其考虑到自身的熟悉水平.坦白的说,这又是一篇"炒冷饭"的文章,但这"冷饭"又确实不 ...

  5. Java中继承和面向接口的编程

    继承是面向对象中很重要的概念.如果考虑到Java语言特性,继承分为两种:接口继承和实现继承.这只是技术层面的问题,即便C++中不存在接口的概念,但它的虚基类实际上也相当于接口.对于OO的初学者来说,他 ...

  6. Java模式设计卖电脑实验报告,面向对象(Java)实验0继承、接口和多态

    <面向对象(Java)实验0继承.接口和多态>由会员分享,可在线阅读,更多相关<面向对象(Java)实验0继承.接口和多态(11页珍藏版)>请在金锄头文库上搜索. 1.电子信息 ...

  7. java程序设计实验报告代写_代写file I/O作业、代写java Scanner I/O程序、代写java编程作业、代做java实验报告...

    代写file I/O作业.代写java Scanner I/O程序.代写java编程作业.代做java实验报告 日期:2018-09-05 03:40 ?Objectives oCreate a pr ...

  8. 黑马java教程是什么_Java教程:揭秘什么是面向接口编程

    先用一个案例来给大家说明一下面向接口编程. 案例:有一个电脑类(Computer),电脑除了有基本的开机关机功能外,还有连接任何外接设备的功能,比如能电脑能连接外置键盘(Keyboard),鼠标(Mo ...

  9. java的知识点13——多态、对象的转型(casting)、final关键字、抽象方法和抽象类、接口的作用、如何定义和使用接口?、接口的多继承、面向接口编程

    多态 多态指的是同一个方法调用,由于对象不同可能会有不同的行为.现实生活中,同一个方法,具体实现会完全不同. 多态的要点: 1. 多态是方法的多态,不是属性的多态(多态与属性无关). 2. 多态的存在 ...

  10. java 接口,接口的特性,接口实现多态,面向接口编程

    package cn.zy.cellphone; /**接口是一种引用数据类型.使用interface声明接口,形式* 形式:public interface 接口名称{}* 接口不能拥有构造方法,不 ...

最新文章

  1. c语言 offsetof函数,C 库宏 - offsetof()函数
  2. CSS+DIV定位分析(relative,absolute,static,fixed)
  3. 基于nginx-rtmp实现电视回看业务
  4. HTML5学习笔记(一):初步印象
  5. Mybatis中trim的使用
  6. 一份北大信科内部流传的 “CS 自救指南”
  7. java 常量 类型_Java的常量及数据类型
  8. Android5.0(Lollipop) BLE蓝牙4.0+浅析code(二)
  9. 在vpc 2007上安装 ubuntu8.04-desktop(多图解)(转)
  10. 关于openstack部分计算节点无法实现热迁移问题描述
  11. root android手机型号,兼容支持各种型号手机的Root权限获取方法
  12. 香港十大外汇交易平台排名(2021最新版)
  13. jbox弹窗_jbox很好的弹出层 很好的弹出层 - 下载 - 搜珍网
  14. 苹果发布的是iPphone 4s,而不是iPhone 5
  15. python处理问题汇总二(重复值索引,顺序读取文件,drop函数,数组元素排名)
  16. 奇瑞鲍思语:时尚引领科技,奇瑞抓住新能源小车趋势
  17. Python之ruamel.yaml模块详解(三)| ruamel.yaml与pyyaml的区别
  18. x3+y3+z3=3
  19. 8. 面向对象 -- 继承
  20. ​Elastic Stack最佳实践系列:Beats->ES,一个更轻型的架构选择

热门文章

  1. dm数据库 linux版下载,达梦(DM)数据库Linux部署安装
  2. ads设计Doherty功放(2)
  3. 安鸾_soap协议注入
  4. Eclipse 中设置编辑器字体,包括 Java 编辑器,XML 编辑器和 Property 编辑器的字体都可以设置
  5. 移动通信网络架构 1G-5G
  6. Batch批处理最全学习教程
  7. httpclient4 post提交请求乱码问题解决
  8. MOSFET手册解读MOS管参数解读(转)
  9. wps 将html转为word,用WPS快速将网页内容转换为WORD文档
  10. Vue中点击复制文本功能