Java程序设计-多态与接口
- 格式:doc
- 大小:226.08 KB
- 文档页数:13
《Java程序设计》教学大纲1 课程的基本描述课程名称Java语言程序设计Java Program Language课程性质专业基础课适用专业计算机科学与技术、软件工程、网络工程等参考教材Java 程序设计教程(慕课版)(第 2 版).张仁伟.人民邮电出版社。
总学时60学时考核方式期末上机考试(开卷考试)+课程作业,其中期末考试占50%,课程作业占50%本课程讲解Java语言的基本词法、语法、常用基础类和面向对象技术,除此以外,还要讲授程序设计要求、技能、方法和技巧,讲授分析问题和解决问题的方法,讲授算法的基本概念与应用。
Java语言基本内容包括基本数据类型、语句、类与对象、子类与继承、接口与实现、内部类与异常类、常用实用类、输入输出流、Java多线程机制、Java网络编程、泛型与集合框架、组件及事件处理、JDBC数据库操作。
2 教学定位通过本课程的学习,使学生获得JA V A语言程序设计的基本概念、方法和技巧,掌握JA V A 语言的语法,运用JA V A语言编写并调试通过能解决一定规模实际问题的程序,使学生受到程序设计基本功的严格训练,培养学生良好的程序设计风格和严密的逻辑思维能力,提高分析问题解决问题以及实际动手能力,为后续课程的学习以及为今后设计开发各种软件打下良好的基础。
2.1 课程教学目标1.能运用Java语言的基本词法、语法和常用类库等面向对象知识分析计算机复杂工程问题;2.能运用Java面向对象原理,借助相应资源,分析影响问题求解因素,并获得结论;3.能运用Java语言完成计算机系统或软件模块的设计。
2.2 课程的主要特点Java语言程序设计是一门专业基础课程。
课程内容包括语言的基本语法(词法和语法)、面向对象技术和常用基础类。
学生首先要切实掌握语言的基本语法,只有掌握了基本语法才有可能灵活运用语言,是具备程序设计能力的基础;Java语言本身是面向对象的语言,学生应很好地掌握面向对象技术,以便于理解面向对象的设计方法,并能用面向对象技术分析、设计软件系统;通过语言的学习,能够理解算法的概念,并能使用基本的、常用的算法解决信息处理问题;在学习语言的过程中,培养学生的编程能力,以利于学生终身学习。
《JAVA程序设计》教学大纲一、课程概述本课程是一门面向计算机科学与技术专业学生的JAVA程序设计课程,通过本课程的学习,学生将掌握JAVA语言的基本知识和编程技巧,并能够运用JAVA语言进行程序开发和问题解决。
二、课程目标1.了解JAVA语言的发展背景、特点和应用领域。
2.掌握JAVA语言的基本语法和编程规范。
3.熟悉JAVA的核心类库,并能够灵活运用。
4.掌握常见数据结构和算法,并能够使用JAVA实现。
5.培养学生的问题分析和解决能力,提高编程能力和代码质量。
三、教学内容与安排1.JAVA语言基础1.1JAVA语言概述1.2程序的编写与运行1.3数据类型与变量1.4运算符与表达式1.5控制语句与循环结构1.6数组与字符串1.7类与对象1.8方法与函数1.9异常处理2.JAVA面向对象编程2.1类与对象的概念2.2封装与继承2.3多态与接口2.4内部类与匿名类2.5泛型与枚举3.JAVA的图形化编程3.1 AWT与Swing框架3.2 常用的Swing组件与布局管理器3.3事件处理与监听器4.JAVA的输入输出流4.1字节流与字符流4.2文件的读写操作4.3序列化与反序列化4.4网络编程的基本概念5.JAVA的多线程编程5.1线程的概念与生命周期5.2线程的创建与启动5.3线程同步与互斥5.4线程的通信与协作6.数据结构与算法6.1线性表与链表6.2栈与队列6.3树与二叉树6.4图的表示与遍历6.5哈希表与排序算法四、教学方法1.理论与实践相结合的教学方法,通过讲解理论知识和实际案例的演示,培养学生的编程思维和实际操作能力。
2.采用小组合作学习的方式,鼓励学生互相交流、合作解决问题,培养团队合作精神和解决问题的能力。
3.通过课堂练习、编程作业、实验项目等形式,加强学生对知识的掌握和实际应用能力的培养。
五、学时分配-本课程总学时:72学时-理论学时:40学时-实验与实践学时:32学时六、评估与考核1.平时成绩:包括课堂表现、课堂作业和小组合作项目成果等。
第Ⅰ部分:实验指导实验1:Java开发环境J2SE一、实验目的(1)学习从网络上下载并安装J2SE开发工具。
(2)学习编写简单的Java Application程序.(3)了解Java源代码、字节码文件,掌握Java程序的编辑、编译和运行过程。
二、实验任务从网络上下载或从CD-ROM直接安装J2SE开发工具,编写简单的Java Application程序,编译并运行这个程序。
三、实验内容1.安装J2SE开发工具Sun公司为所有的java程序员提供了一套免费的java开发和运行环境,取名为Java 2 SDK,可以从上进行下载。
安装的时候可以选择安装到任意的硬盘驱动器上,例如安装到C:\j2sdk1.4.1_03目录下。
教师通过大屏幕演示J2SE的安装过程,以及在Windows98/2000/2003下环境变量的设置方法。
2.安装J2SE源代码编辑工具Edit Plus教师通过大屏幕演示Edit Plus的安装过程,以及在Windows98/2000/2003操作系统环境下编辑Java 原程序的常用命令的用法。
3.编写并编译、运行一个Java Application程序。
创建一个名为HelloWorldApp的java Application程序,在屏幕上简单的显示一句话"老师,你好!"。
public class HelloWorldApp{public static void main(String[] args){System.out.println("老师,你好!");}}4.编译并运行下面的Java Application程序,写出运行结果。
1:public class MyClass {2:private int day;3:private int month;4:private int year;5:public MyClass() {6:day = 1;7:month = 1;8:year = 1900;9:}10:public MyClass(int d,int m,int y) {11:day = d;12:month = m;13:year = y;14:}15:public void display(){16:System.out.println(day + "-" + month + "-" + year);17:}18:public static void main(String args[ ]) {19:MyClass m1 = new MyClass();20:MyClass m2 = new MyClass(25,12,2001);21:m1.display();22:m2.display();23:}24:}运行结果:1-1-190025-12-2001实验2:Java基本数据类型一、实验目的(1)掌握javadoc文档化工具的使用方法。
Java实验报告继承、多态、接⼝和异常处理实验5 继承、多态、接⼝和异常处理⼀、实验⽬的1、掌握Java的类和对象的声明和使⽤⽅法;2、掌握Java的类的继承和实现⽅法;3、掌握多态性在类的继承中的运⽤;4、掌握接⼝的定义与使⽤;5、掌握基本异常的处理机制;6、熟悉try语句与catch语句的搭配使⽤;7、了解有异常处理与没有异常处理的差别;8、多重catch语句的使⽤;9、使⽤Throws声明异常和Throw抛出异常。
⼆、实验环境1、PC微机;2、DOS操作系统或 Windows 操作系统;3、Java sdk程序开发环境、eclipse集成环境。
三、实验内容1. 设计三个类,分别是学⽣类Student,本科⽣类UnderGraduate,研究⽣类Postjgraduate,其中Student类是⼀个抽象类,它包含学⽣的基本信息如姓名、所学课程、课程成绩等,⽽Undergraduate类和Postgraduate类都是Student类的⼦类,这两个类计算课程成绩等级的⽅法有所不同,如下表所⽰。
假设某班级⾥既有研究⽣⼜有本科⽣,编写程序统计出全班学⽣2. 和Mobilephone具体实现,并设计⼀个应⽤程序类来使⽤这些类。
3.要求设计⼀个GUI图形窗⼝程序,该程序让⽤户输⼊⼀个星期中的任意⼀天的数字1-7,然后输出该数字所对应的是星期⼏。
四、实验步骤实验内容⼀1.建⽴package experiment5_1,其最终⽬录结构如下:2.建⽴Student类:package experiment5_1;public abstract class Student {final static int CourseNo = 3;String name;String type;int[] courses;String courseGrade;public Student(String name) {/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html = name; courses = new int[CourseNo];courseGrade = "" ;}public abstract void calculateGrade();public String getName( ) {return name;}public String getType( ) {return type ;}public String getCourseGrade( ) {return courseGrade;}public int getCourseScore(int courseNumber) {return courses[courseNumber];}public void setName(String name) {/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html = name;}public void setType(String type) {this.type = type;}public void setCourseScore(int courseNumber, int courseScore) { //按课程索引号设置课程成绩this.courses[courseNumber] = courseScore ;}}3.建⽴外部类(1)研究⽣类Postjgraduatepackage experiment5_1;public class postgraduate extends Student {public postgraduate(String name) {super(name);type = "研究⽣";}public void calculateGrade() {// TODO Auto-generated method stubint total = 0;double average = 0;for (int i = 0; i < CourseNo; i++) {total += courses[i];};average = total / CourseNo;if (average>=90&&average<100) courseGrade = "优秀"; else if (average>=80&&average<90) courseGrade = "良好"; else if (average>=70&&average<80) courseGrade = "⼀般"; else if (average>=60&&average<70) courseGrade = "及格"; else courseGrade = "不及格";}}(2)本科⽣类UnderGraduatepackage experiment5_1;public class undergraduate extends Student {public undergraduate(String name ) {super(name);type = "本科⽣";}public void calculateGrade() {int total = 0;double average = 0;for (int i = 0; i < CourseNo; i++) {total += getCourseScore(i) ;};average = total / CourseNo;if (average>=80&&average<100) courseGrade = "优秀"; else if (average>=70&&average<80) courseGrade = "良好"; else if (average>=60&&average<70) courseGrade = "⼀般"; else if (average>=50&&average<60) courseGrade = "及格"; else courseGrade = "不及格";}}4.编写代码测试函数package experiment5_1;public class polymorphism {public static void main(String[] args) {Student[] students = new Student[5];students[0] = new undergraduate("陈建平");students[1] = new undergraduate("鲁向东");students[2] = new postgraduate("匡晓华");students[3] = new undergraduate("周丽娜");students[4] = new postgraduate("梁欣欣");for (int i=0; i<5 ;i++) {students[i].setCourseScore(0,87);students[i].setCourseScore(1,90);students[i].setCourseScore(2,78);}for (int i=0; i<5 ;i++) {students[i].calculateGrade();}System.out.println("姓名" + " 类型" +" 成绩");System.out.println("-----------------------");for (int i=0; i<5 ;i++) {System.out.println(students[i].getName( )+" "+students[i].getType( )+" "+students[i].getCourseGrade( ));}}}实验内容⼆1.建⽴package experiment5_2,其最终⽬录结构如下:2.写接⼝Soundable代码:package experiment5_2;public interface Soundable {public void increaseV olume( );public void decreaseV olume( );public void stopSound( );public void playSound( );}3.创建三个类Radio、Walkman和Mobilephone具体实现,分别添加代码:// Mobilephone类package experiment5_2;class Mobilephone implements Soundable{public void increaseV olume( ) {System.out.println("增⼤⼿机⾳量");}public void decreaseV olume( ) {System.out.println("减⼩⼿机⾳量");}public void stopSound( ) {System.out.println("关闭⼿机");}public void playSound( ) {System.out.println("⼿机发出来电铃声");}}// Walkman类package experiment5_2;class Walkman implements Soundable { public void increaseV olume( ) { System.out.println("增⼤随声听⾳量"); }public void decreaseV olume( ) { System.out.println("减⼩随声听⾳量"); }public void stopSound( ) {System.out.println("关闭随声听");}public void playSound( ) {System.out.println("随声听发出⾳乐"); }}// Radio类package experiment5_2;class Radio implements Soundable{ public void increaseV olume( ) { System.out.println("增⼤收⾳机⾳量"); }public void decreaseV olume( ) { System.out.println("减⼩收⾳机⾳量"); }public void stopSound( ) {System.out.println("关闭收⾳机");}public void playSound( ) {System.out.println("收⾳机播放⼴播"); }}4.创建people类及编写测试代码://People类package experiment5_2;class People {public void listen(Soundable s) {s.playSound( );}}//测试代码package experiment5_2;import java.util.Scanner;public class InterfaceTest {public static void main(String[] args) {int i;People sportsman = new People( );Scanner scanner = new Scanner(System.in);Soundable[] soundDevice = new Soundable[3];//往声⾳设备数组中放⼊能发声的设备soundDevice[0] = new Radio( );soundDevice[1] = new Walkman( );soundDevice[2] = new Mobilephone();System.out.println("你想听什么? 请输⼊选择:0-收⾳机1-随声听2-⼿机");i = scanner.nextInt( );//开始听声⾳sportsman.listen(soundDevice[i]);soundDevice[i].increaseV olume( );soundDevice[i].stopSound();scanner.close();}}实验内容三1.建⽴package experiment5_3,其最终⽬录结构如下package experiment5_3;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class DateTransf extends JFrame implements KeyListener{/****/private static final long serialVersionUID = 1L;private static DateTransf frm;private static JTextField txt;private static JTextField data;DateTransf() {setTitle("数字与星期转换");setLocation(700, 300);setSize(400,130);}public static void main(String[] args) {frm = new DateTransf();frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frm.setLayout(new GridLayout(2,2));txt = new JTextField(12);data = new JTextField(12);JLabel lable1 = new JLabel("输⼊数字:");JLabel lable2 = new JLabel("星期⼏:");frm.add(lable1);txt.addKeyListener(frm);frm.add(txt);frm.add(lable2);frm.add(data);frm.setVisible(true);}public void keyPressed(KeyEvent e) {if (e.getSource() == txt) {if (e.getKeyCode() == KeyEvent.VK_ENTER) // 判断按下的键是否是回车键{try {int number = Integer.parseInt(txt.getText());switch (number) {case 1:data.setText("Mon");break;case 2:data.setText("Tue");break;case 3:data.setText("Wen");break;case 4:data.setText("Thu");break;case 5:data.setText("Fri");break;case 6:data.setText("Sat");break;case 7:data.setText("Sun");break;default:JOptionPane.showMessageDialog(null, "您输⼊的数字不是1~7","⽆效⽇期",/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html RMATION_MESSAGE); break;}}catch (Exception e1) {// TODO: handle exceptionJOptionPane.showMessageDialog(null, "您输⼊的不是整数","⽆效⽇期",/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html RMA TION_MESSAGE); }}}}public void keyReleased(KeyEvent e) {}public void keyTyped(KeyEvent e) {}}2.编译运⾏五、实验结果●实验内容⼀结果:●实验内容⼆结果:●实验内容三结果:六、实验⼩结1.这次实验的内容⽐较多,需要掌握Java的类和对象的声明和使⽤⽅法、Java的类的继承和实现⽅法、多态性在类的继承中的运⽤、接⼝的定义与使⽤、基本异常的处理机制、try语句与catch语句的搭配使⽤等等;2. 在实验过程中,重点是要区分好实例和类,灵活掌握类的调⽤。
《Java面向对象程序设计-继承和多态》教案第一章:引言1.1 课程简介本课程旨在帮助学生掌握Java面向对象程序设计中的继承和多态概念。
通过学习,学生将能够理解继承和多态的原理,并能够运用它们解决实际编程问题。
1.2 课程目标理解继承的概念和原理掌握如何使用继承来实现代码复用理解多态的概念和原理掌握如何使用多态来实现动态绑定第二章:继承2.1 继承的概念介绍继承的定义和作用解释为什么使用继承2.2 继承的语法介绍如何使用extends关键字实现继承解释继承中的构造函数和继承关系2.3 继承的实现演示如何使用继承来复用代码解释继承的层次结构和菱形继承第三章:多态3.1 多态的概念介绍多态的定义和作用解释多态的好处3.2 方法重写解释方法重写的概念和规则演示如何使用方法重写来实现多态3.3 方法重载解释方法重载的概念和规则演示如何使用方法重载来提高代码可读性第四章:继承和多态的案例分析4.1 案例一:动物和鸟类使用继承和多态来定义动物和鸟类的关系实现动物和鸟类的属性和方法4.2 案例二:形状和圆形使用继承和多态来定义形状和圆形的关系实现形状和圆形的属性和方法第五章:总结和练习5.1 课程总结回顾继承和多态的概念和原理强调继承和多态在面向对象程序设计中的重要性5.2 练习题提供一些练习题,以帮助学生巩固所学知识第六章:继承和多态的深入理解6.1 继承的类型解释接口继承和类继承的区别讨论继承的优点和缺点6.2 多态的应用探讨多态在日常编程中的应用场景分析多态如何提高程序的可扩展性和灵活性第七章:Java中的继承和多态实例7.1 继承实例:汽车和摩托车通过实例展示如何使用继承来创建汽车和摩托车类演示如何通过继承来扩展属性和方法7.2 多态实例:支付接口和具体的支付方式创建一个支付接口和多个具体的支付方式类演示如何使用多态来实现不同的支付方法第八章:继承和多态的陷阱与最佳实践8.1 继承的陷阱讨论继承可能带来的过度耦合问题解释如何避免继承的陷阱8.2 多态的陷阱分析多态可能导致的类型不匹配问题探讨如何安全地使用多态8.3 最佳实践提供使用继承和多态的最佳实践指南强调代码可读性和可维护性第九章:继承和多态在设计模式中的应用9.1 设计模式简介介绍设计模式的概念和重要性解释设计模式与继承和多态的关系9.2 继承和多态在设计模式中的应用案例通过案例分析展示继承和多态如何在设计模式中发挥作用讨论设计模式如何提高程序设计的质量和可复用性第十章:课程回顾与拓展学习10.1 课程回顾总结本课程的重点内容和关键概念强调继承和多态在实际编程中的应用10.2 拓展学习资源提供一些拓展学习的资源和建议鼓励学生继续深入学习面向对象程序设计的其他方面第十一章:继承和多态的实际应用案例11.1 案例分析:图形库的设计通过分析图形库的设计,展示继承和多态如何用于实现复杂的图形操作。
第3章面向对象程序设计基础【1】什么是Java程序使用的类?什么是类库?[解答]:Java程序的基本单位是类。
对象是对事物的抽象,而类是对对象的抽象和归纳,找出事物的共性,把具有共同性质的事物归结为一类,得出一个抽象的概念——类。
类是具有相同属性和方法的一组对象的集合,类是在对象之上的抽象,对象则是类的具体化,一旦建立类之后,就可用它来建立许多你需要的对象。
Java的类库是系统提供的已实现的标准类的集合,是Java编程的API(Application Program Interface),它可以帮助开发者方便、快捷地开发Java程序。
【2】如何定义方法?在面向对象程序设计中方法有什么作用?[解答]:方法的定义由两部分组成:方法声明和方法体。
方法声明的基本格式如下:返回类型方法名(形式参数){… //方法体内容}方法声明包括方法名、返回类型和形式参数,方法的小括号是方法的标志;方法体为实现方法行为的Java语句。
在面向对象程序设计中,方法所起的作用是完成对类和对象属性操作。
【3】简述构造方法的功能和特点。
下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。
void Student(int no,String name){studentNo=no;studentName=name;return no;}[解答]:构造方法是一个特殊的方法,主要用于初始化新创建的对象。
构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。
以上的代码段出错于:①构造方法Student()前不能加void ②不能用return语句【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。
编写Java程序创建student类的对象及测试其方法的功能。
Java程序设计专升本考题详解Java程序设计是计算机科学与技术专业的重要课程之一,也是许多专升本考试中必考的科目之一。
本文将详细解析Java程序设计专升本考题,帮助考生更好地理解和应对考试。
1. Java程序设计的基本概念和特点Java程序设计是一种面向对象的编程语言,具有跨平台性、安全性和可靠性等特点。
Java程序设计的基本概念包括类、对象、方法等,考生需要掌握Java程序设计的基本语法和基本数据类型。
2. Java程序设计的语法要点2.1 基本数据类型Java程序设计中的基本数据类型包括整型、浮点型、字符型和布尔型等。
考生需要了解每种数据类型的取值范围和使用方法。
2.2 控制流程Java程序设计中的控制流程包括顺序结构、选择结构和循环结构。
考生需要熟练掌握if语句、switch语句和for循环等控制流程的使用方法。
2.3 数组Java程序设计中的数组是一种重要的数据结构,用于存储一组相同类型的数据。
考生需要了解数组的声明、初始化和遍历等操作。
3. Java面向对象程序设计3.1 类和对象Java程序设计是一种面向对象的编程语言,类是Java程序的基本组织单位,对象是类的实例。
考生需要了解类的定义、对象的创建和使用,以及类与对象之间的关系。
3.2 继承和多态继承是Java面向对象编程的重要特性,通过继承可以实现代码的重用和扩展。
多态是指同一个类的实例在不同的情况下表现出不同的行为。
考生需要了解继承和多态的概念和使用方法。
3.3 封装和抽象封装是指将数据和方法封装在一起形成一个类,通过访问修饰符控制对数据和方法的访问权限。
抽象是指通过抽取共同的特征和行为形成一个抽象类或接口,用于统一管理和使用一组类。
考生需要了解封装和抽象的概念和使用方法。
4. Java面向对象程序设计的高级特性4.1 接口和多态接口是一种抽象定义,规定了类必须实现的一组方法,通过接口可以实现多态性。
考生需要了解接口的定义和使用方法,以及接口与多态的关系。
《Java程序设计》课程标准一、课程定位1.课程性质专业必修课2.课程作用本课程以就业为导向,从技术技能人才培养的要求出发,以强化技术应用能力培养为主线,培养学生程序设计能力,面向对象编程能力,利用计算机语言分析问题解决问题的能力。
在技能培养的同时,注重培养岗位所需的创新意识、团队合作精神等职业素质,使学生具备良好的软件应用开发的职业能力和职业素养。
二、课程目标通过《Java程序设计》课程的学习,使学生具备面向对象程序设计的思想和能力,具有用Java语言编程实现的能力。
1.知识目标(1)了解Java面向对象的程序设计思想;(2)掌握Java类及其成员的定义;(3)掌握Java类的继承的实现,理解抽象类、接口和多态的实现;(4)掌握Java的事件编程模式;(5)掌握Java的组件开发;(6)掌握Java的文件访问;(7)理解Java的多线程编程模式。
2.能力目标(1)会使用Java类,会类成员属性、类成员方法的定义;(2)会使用Java类的继承,抽象类和接口的定义,以及多态的实现;(3)会使用Java的事件进行编程;(4)会使用Java的组件进行程序设计;(5)会Java的文件访问操作;(6)会Java的多线程编程。
3.素质目标(1)具有良好的职业道德和质量服务意识;(2)具有团队协作精神和较强的协调能力及独立工作的能力;(3)具有良好的心理素质;三、课程设计1.设计思想(1)教学内容框架(2)总体设计思路本课程旨在培养学生面向对象的程序设计思想,掌握面向对象的Java程序设计,程序设计中组件和事件模型的应用,从而培养学生对软件开发的认识,了解并掌握软件开发的步骤及思想。
在课程实施过程中,根据讲授的知识,可以相应使用以下的学习情境:2.课时分配建议本课程课时为100学时,其中理论教学50学时,实践教学50学时。
如果课时超过100学时,超过的学时用于实践教学,以提高学生的技能;如果课时低于100学时的,可以适当去掉线程内容,或者合并部分教学单元内容。
Java程序设计实验四:继承、多态与接口1.提交期限和方法期限:第12周周五(2015-11-27)23:59 pm方法:由学习委员收集所有学生的实验报告,以电子档的形式提交给任课教师(发邮箱:9867941@)。
2.实验目的及要求掌握Java的基本数据类型、运算符、表达式和语句。
运行环境:JDK1.7开发环境:Eclipse3.实验内容及题目3.1子类的继承与方法的重写【题1 中国人与美国人】在Eclipse 中创建名为Lab4的新项目,编写程序模拟中国人、美国人、北京人。
除主类外,程序中有4个类:People、ChinaPeople、AmericanPeople 和BeijingPeople类。
要求如下:(1)People类有权限是protected的double型成员变量:height和weight,以及public void speakHello( )、public void averageHeight( )和public void averageWeight( )方法。
(2)ChinaPeople类是People类的子类,新增了public void chinaGongfu( )方法。
要求ChinaPeople重写父类的public void speakHello ()、public void averageHeight( )和public void averageWeight( )方法。
(3)AmericanPeople类是People的子类,新增public void americanBoxing( )方法。
要求AmericanPeople重写父类的public void speakHello( )、public void averageHeight( )和public void averageWeight( )方法。
(4)BeijingPeople类是ChinaPeople的子类,新增public void beijingOpera( )方法。
要求BeijingPeople重写父类的public void speakHello( )、public void averageHeight( )和public void averageWeight( )方法。
运行效果如下图。
按下列代码模板要求,将【代码】部分替换为Java程序代码。
【思考题(选做)】People类中的public void speakHello( ), public void averageHeight( ), public void averageWeight( )三个方法的方法体中的语句是否可以省略?【答:】可以省略.【题2 银行与利息】在Lab4项目中,编写程序。
验证教材第5章81页的【例5-7】。
假设银行Bank已经有了按整年year计算利息的一般方法,其中year只能取正整数。
如按整年计算的方法:Double compuerInterest(){interest = year * 0.35 * savedMoney;return interest;}建设银行的天利息计算公式为:dayInterst = 天数* 0.0001 * 存款数大连银行的天利息计算公式为:dayInterst = 天数* 0.00012 * 存款数参照例子中的建设银行或大连银行,再编写一个商业银行,让程序输出8000元存在商业银行8年零236天的利息。
【知识点】1.成员变量隐藏和方法重写;2.super关键字。
【实验指导】1.当super调用被隐藏的方法时,该方法中出现的成员变量是被子类隐藏的成员变量或继承的成员变量。
【题3 歌手大赛与学生体重评估】在Lab4项目中,编写程序,要求模拟歌手大赛计算选手成绩和评估班级学生体重。
歌手大赛计算选手成绩的方法是去掉一个最高分和一个最低分后再计算平均分,而学校评估一个班级的学生的体重时,是计算全班同学的平均体重。
SongGame类和School类都实现了ComputerAverage接口,但实现方式不同。
ComputerAverage类和Estimator主类的部分代码已给出(如下),按下列代码模板要求,将【代码】部分替换为Java程序代码,并写出SongGame类和School类。
//ComputerAverage.javapublic interface ComputerAverage{ //接口public double average(double x[]);}//Estimator.javapublic 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[] = {56, 55.5, 65, 50, 51.5, 53.6, 70, 49, 66, 62, 46};ComputerAverage computer;computer = new SongGame();//computer调用average(double x[])方法,将数组a传递给参数x//【代码1】System.out.printf("%n");System.out.printf("歌手最后得分:%5.3f\n", result);computer = new School();//computer调用average(double x[])方法,将数组b传递给参数x//【代码2】System.out.printf("学生平均体重:%5.2f kg", result);}}运行效果如下图。
【知识点】1.接口体中只有常量的声明(没有变量)和抽象方法声明。
而且接口体中所有的常量的访问权限一定都是public(允许省略public、final修饰符)、所有的抽象方法的访问权限一定都是public(允许省略public、abstract修饰符)。
2.类实现接口,以便绑定接口中的方法。
一个类可以实现多个接口,类通过使用关键字implements声明自己实现一个或多个接口。
如果一个非抽象类实现了某个接口,那么这个类必须重写的所有方法。
【实验指导】1.可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中,那么该接口变量就可以调用被类实现的接口方法。
2.接口产生的多态就是指不同类在实现同一个接口时可能具有不同的实现方式。
【学生解答】(1)程序代码:【代码1】double result = computer.average(a);【代码2】result = computer.average(b);// SongGame.javaclass SongGame implements ComputerAverage{public double average(double x[]){double min=10,max=-20,sum=0;for(int i = 0;i<x.length;i++){if(x[i]<=min){min = x[i];}if(x[i]>=max){max = x[i];}sum+=x[i];}sum = sum - min - max;sum = (double)(sum/(x.length-2));return sum;}}//School.javaclass School implements ComputerAverage{public double average(double x[]){double sum = 0;for(int i = 0; i<x.length;i++){sum+= x[i];}double aver = (double)(sum/x.length);return aver;}}(2)运行结果截图:【思考题(选做)】School类如果不重写public double average(double x[])方法,程序编译时提示怎样的错误?【答:】【题4(选做)天气预报】在Lab4项目中,编写一个天气预报的Java应用程序,天气可能出现不同的状态,要求用接口封装天气的状态,具体要求如下:(1)编写一个接口WeatherState,该接口有一个名字为void showState( )的方法。
(2)编写Weather类,该类中有一个WeatherState接口声明的变量state。
另外,该类有一个show( )方法,在该方法中让接口state回调showstate( )方法。
(3)编写若干个实现WeatherState接口的类,负责刻画天气的各种状态。
(4)编写主类,在主类中进行天气预报。
程序运行效果如下图。
【知识点】掌握面向接口的编程思想:1.程序设计时经常会使用接口,因为接口只关心操作,不关心这些操作具体实现的细节,可以使程序的设计者把主要精力放在程序的设计上,而不拘泥于细节的实现(细节留给接口的实现者),即避免设计者把大量的时间和精力花费与具体的算法上。
2.使用接口进行程序设计的核心技术之一是使用接口回调,即将实现接口的类的对象的引用放到接口变量中,那么这个接口变量就可以调用类实现的接口方法。
3.面向接口编程,是指当设计某种重要的类是,不让该类面向具体的类,而是面向接口,即所设计类中的重要数据是接口声明的变量,而不是具体类声明的对象。
【学生解答】(1)程序代码://WeatherState.javapublic interface WeatherState {public void showState();}weather w = new weather();w.show(new TomorrowMoring()); //接口回调w.show(new TomorrowNight());}}(2)运行结果截图:4.提交要求本次实验需提交的文件包括:(1)实验报告的word文档,文件名格式为:学号姓名班级实验X.doc(例如:14031103张三1班实验1.doc),将word文档的实验报告放入以“学号姓名班级实验X”命名的文件夹中。
如下图所示。
(2)Java源文件,建立一个以“学号姓名班级实验X”命名的文件夹(例如:14031103张三1班实验1),文件夹里包含所要求建立的,以及项目中每题的Java源程序。
如下图所示。
本次实验为个人任务,需独立完成,以电子档的形式提交给学习委员,再由学习委员在规定期限内提交给任课老师。
未按时提交实验报告者,每迟交一天扣一个等级分(比如,原本为A等级的,迟交一天降为A-),扣完为止。