Java上机2019/11/01

相关知识点

接口体中只有常量的声明(没有变量)和抽象方法声明。而且接口体中所有的常量的访问权限一定都是public(允许省略public、final修饰符),所有的抽象方法的访问权限一定都是public(允许省略public、abstract修饰符)。

接口由类去实现以便绑定接口中的方法。一个类可以实现多个接口,类通过使用关键字implements声明自己实现一个或多个接口。如果一个非抽象类实现了某个接口,那么这个类必须重写接口的所有方法。

实验1 评价成绩

具体代码:

Estimator.java

package Evaluation_results;//这是我自己另外创建的包
//实验目的:掌握类怎样实现接口
//实验要求:体操比赛计算选手成绩的办法是去掉一个最高分和最低分后再计算平均分
//而学校考查一个班级的某科目的考试情况时,是计算全班同学的平均成绩
//Gymnastics类和School类都实现了ComputerAverage接口,但实现的方式不同
interface CompurerAverage {public double average(double x[]);
}class Gymnastics implements CompurerAverage {public double average(double x[]) {int count = x.length;double aver = 0, temp = 0;for (int i = 0; i < count; i++) {for (int j = i; j < count; j++) {if (x[j] < x[i]) {temp = x[j];x[j] = x[i];x[i] = temp;}}}for (int i = 1; i < count - 1; i++) {aver = aver + x[i];}if (count > 2)aver = aver / (count - 2);elseaver = 0;return aver;}
}class School implements CompurerAverage {// 【代码1】重写public double average(double x[])方法,返回数值x[]的元素的算术平均public double average(double x[]) {int count = x.length;double aver = 0, sum = 0;for (int i = 0; i < count; i++) {sum = sum + x[i];}aver = sum / count;return aver;}
}public class Estimator {public static void main(String args[]) {double a[] = { 9.89, 9.88, 9.99, 9.12, 9.69, 9.76, 8.97 };double b[] = { 89, 56, 78, 90, 100, 77, 56, 45, 36, 79, 98 };CompurerAverage computer;computer = new Gymnastics();// 【代码2】computer调用average(double x[])方法,将数组a传递给参数xdouble result = computer.average(a);System.out.printf("%n");System.out.printf("体操选手最后得分:%5.3f\n",result);computer = new School();// 【代码3】computer调用average(double x[])方法,将数组b传递给参数xresult = computer.average(b);System.out.printf("班级考试平均分数:%-5.2f", result);}
}

运行结果:

实验后的练习:
School类如果不重写public double average(double x[])方法,程序编译时提示怎样的错误?

实验2 货车的装载量

具体代码:

CheckCarWeight.java

package Truck_load;
//实验目的:掌握接口回调技术//实验要求:货车要装载一批货物,货物由三种商品组成:电视、计算机、和洗衣机。卡车需要计算出整批货物载货的重量。
//要求有一个ComputeWeight接口,该接口中有一个方法:public double computeWeight()
//有三个实现该接口的类:Television、Computer和WashMachine。这三个类通过实现接口computeTotalSales给出自重。
//有一个Truck类,该类用ComputeWeight接口类型的数组作为成员(Truck类面向接口),那么该数组的单元就可以存放Television对象的引用、
//Computer对象的引用或WashMachine对象的引用。程序能输出Truck对象所装载的货物的总重量。interface ComputerWeight {public double computeWeight();
}class Television implements ComputerWeight {// 【代码1】重写computeWeight()方法public double computeWeight() {return 12.5;//康佳 LED42M3500PDE 含底座:12.5KG}
}class Computer implements ComputerWeight {// 【代码2】重写computeWeight()方法public double computeWeight() {return 2.6;//华硕(ASUS)A53XI245SD-SL:2.6KG}
}class WashMachine implements ComputerWeight {// 【代码3】重写computeWeight()方法public double computeWeight() {return 12;//小天鹅超大容量洗衣机:12KG}
}class Truck {ComputerWeight[] goods;double totalWeights = 0;Truck(ComputerWeight[] goods) {this.goods = goods;}public void setGoods(ComputerWeight[] goods) {this.goods = goods;}public double getTotalWeight() {totalWeights = 0;// 【代码4】计算totalWeightsfor(int i=0;i<goods.length;i++) {totalWeights=totalWeights+goods[i].computeWeight();}return totalWeights;}}public class CheckCarWeight {public static void main(String[] args) {ComputerWeight[] goods = new ComputerWeight[650];// 650件货物for (int i = 0; i < goods.length; i++) {if (i % 3 == 0)goods[i] = new Television();else if (i % 3 == 1)goods[i] = new Computer();else if (i % 3 == 2)goods[i] = new WashMachine();}Truck truck = new Truck(goods);System.out.printf("\n货车装载的货物重量:%-8.5f kg\n", truck.getTotalWeight());goods = new ComputerWeight[68];// 68件货物for (int i = 0; i < goods.length; i++) {// 简单分成两类if (i % 2 == 0)goods[i] = new Television();elsegoods[i] = new WashMachine();}truck.setGoods(goods);System.out.printf("货车装载的货物重量:%-8.5f kg\n", truck.getTotalWeight());}}

运行结果:

实验3 小狗的状态

具体代码:

CheckDogState.java

package Puppy_Village;
//实验目的:掌握接口编成思想//实验要求:小狗在不同环境条件下可能呈现不同的状态表现,要求用接口封装小狗的状态。具体要求如下。
//(1)编写一个接口DogState,该接口有一个名字为void showState()的方法。
//(2)编写Dog类,该类中有一个DogState接口声明的变量state。另外,该类有一个show()方法,在该方法中让接口state回调showState()方法。
//(3)编写若干个实现DogState接口的类,负责刻画小狗的各种状态。
//(4)编写主类,在主类中测试小狗的各种状态。interface DogState {public void showState();
}class SoftlyState implements DogState {public void showState() {System.out.println("听主人的命令");}
}class MeetEnemyState implements DogState {// 【代码1】重写public void showState()方法public void showState() {System.out.println("屈服吧,愚蠢的人");}
}class MeetFriendState implements DogState {// 【代码2】重写public void showState()方法public void showState() {System.out.println("我还以为没有人理我了");}
}class MeetAnotherDog implements DogState {// 【代码3】重写public void showState()方法public void showState() {System.out.println("要来一杯吗,我看你跟我一样");}
}class Dog {DogState state;public void show() {state.showState();}public void setstate(DogState s) {state = s;}
}public class CheckDogState {public static void main(String[] args) {Dog yellowDog = new Dog();System.out.print("狗在主人面前:");yellowDog.setstate(new SoftlyState());yellowDog.show();System.out.print("狗遇到敌人:");yellowDog.setstate(new MeetEnemyState());yellowDog.show();System.out.print("狗遇到朋友:");yellowDog.setstate(new MeetFriendState());yellowDog.show();System.out.print("狗遇到同伴:");yellowDog.setstate(new MeetAnotherDog());yellowDog.show();}}

运行结果:

实验后的练习 水的状态

具体代码:

WaterForm.java

package Water_form;
//实验目的:用面向接口的思想编写程序,模拟水杯中的水在不同温度下可能出现的状态。interface State {// 形态接口public void showState();// 表述形态的方法
}class GasState implements State {// 重写showState()方法public void showState() {System.out.println("该温度下水为气态(水蒸气)");}
}class LiquidState implements State {// 重写showState()方法public void showState() {System.out.println("该温度下水为液态(自来水)");}
}class SolidState implements State {// 重写showState()方法public void showState() {System.out.println("该温度下水为固态(冰雪糕)");}
}class Cup {State state;public void show() {state.showState();}public void setstate(State s) {state = s;}
}public class WaterForm {public static void main(String[] args) {Cup soda = new Cup();System.out.print("水的温度为0~100摄氏度:");soda.setstate(new LiquidState());soda.show();System.out.print("水的温度为小于0摄氏度:");soda.setstate(new SolidState());soda.show();System.out.print("水的温度为大于100摄氏度:");soda.setstate(new GasState());soda.show();}}

运行结果:

Java接口学习作业相关推荐

  1. Java接口学习(接口的使用、简单工厂、代理模式、接口和抽象类的区别)

    前言引入 官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 我的 ...

  2. Java 回调 (Callback) 接口学习使用

    文章目录 Java 回调 (Callback) 接口学习使用 1.什么是回调(Callback)? 2.Java代码示例 2.直接调用 3.接口调用 4.Lambda表达式 推荐看我的InfoQ地址, ...

  3. 翁恺《零基础学习Java语言》作业答案 第1周到第7周

    翁恺<零基础学习Java语言>作业答案 第1周到第7周全部 文章目录 前言 一.第1周 计算 1.温度转换 二.第2周 判断 1.时间换算 2.信号报告 二.第3周 循环 1.奇偶个数 2 ...

  4. Java自学.接口学习笔记!

    接口学习笔记 文章目录 接口学习笔记 1.接口的概述与生活中的举例 2.接口定义的基本格式 3.接口的抽象方法 3.1接口抽象方法的定义 3.2接口的抽象方法使用 4.接口的默认方式 4.1接口的默认 ...

  5. javaweb基于JSP开发Java在线学习平台 大作业 毕业设计源码

    基于JSP开发Java在线学习平台:(毕业设计/大作业) 开发环境:    Windows操作系统 开发工具: MyEclipse+Jdk+Tomcat+MYSQL数据库 运行效果图: 基于JSP开发 ...

  6. 【Java】Java学习笔记(2)——Java面向对象基础作业函数题

    本人私人博客:Megalomania,大部分文章会现在博客上传,有不足之处欢迎指正. 学校小学期Java课程的练习题,留个档便于以后需要时候有例子可以回忆,写的烂的地方请多多包含 1.求两个数值之和 ...

  7. Java并发39:Executor系列--ScheduleExecutorService接口学习笔记

    [超级链接:Java并发学习系列-绪论] 本章主要学习ScheduleExecutorService接口. 1.ScheduleExecutorService接口概述 @since 1.5 Sched ...

  8. Java接口自动化测试框架学习

    Java接口自动化测试框架学习 高级软件测试,性能测试,功能测试,自动化测试,接口测试,移动端测试,手机测试,WEB测试,渗透测试,测试用例设计,黑盒测试,白盒测试,UFT高级测试,Android测试 ...

  9. 初学Java基础学习——抽象类和接口的区别

    初学Java基础学习--抽象类和接口的区别 一.关键字 1)抽象类的关键字 abstract class A{//定义一个抽象类: } class Test extends A{//子类使用exten ...

最新文章

  1. GDataXMLNode:xml解析库
  2. 智源研究院发布 2020 年世界十大 AI 进展
  3. 数据蒋堂 | JOIN简化 - 消除关联
  4. EasyPHP-Devserver-17的坑位
  5. 最近项目用到Dubbo框架,临时抱佛脚分享一下共探讨(转)
  6. linux shell编程学习笔记(9)正则表达式
  7. 【caffe-Windows】训练自己数据——数据集格式转换
  8. access 如何使用dolby_Access/VBA/Excel-Access表及字段创建-03
  9. java tcp实现_JAVA 通过 Socket 实现 TCP 编程
  10. 在React中测试和调试
  11. Linux 视频播放器
  12. bat编程和vbs编程入门
  13. Ubuntu 论坛遭到入侵,用户数据泄露
  14. win7右键菜单管理_电脑右键新建不见了怎么办 电脑右键新建不见了解决方法【详解】...
  15. sql分组 会计分录_会计科目是对()具体内容进行分类核算的项目。A.会计主体B.会计帐户C.会计分录D.会计对象...
  16. BH1750( GY-302 )光照传感器
  17. 【云原生 | 从零开始学Kubernetes】十、k8sPod节点亲和性和反亲和性
  18. 网络与信息安全实验总结(报文监听与分析,漏洞扫描,逆向工程,安全产品)
  19. IM软件中的语音录制与播放【iOS】
  20. performSelector的原理及应用场景分析

热门文章

  1. 马斯克又要逆天!飞船回收24小时内只加燃油再次上天
  2. 梯度下降法中BGD、SGD、MBGD的区别
  3. C51单片机的省电模式
  4. 牛客网剑指Offer_66道python(更新中)
  5. 剑指offer 数组中的逆数对
  6. 女生学平面设计有发展前途吗?累不累?
  7. Java—网络编程入门
  8. python和c++情侣网名_打通Python和C++之后?你懂的!
  9. dovecot MySQL配置_postfix+mysql+dovecot
  10. 用JS基础写一个简单的滚动条事件