Java程序设计实验指导书
更新时间:2024-05-22 23:45:02 阅读量: 综合文库 文档下载
Java语言程序设计实验指导书(v1.7)
作者 刘烁
制订日期:2011年5月19日 更新日期:2013年12月6日
理论教材:《Java程序设计标准教程》 第1版 邱加永 人民邮电出版社 实验学时:36 实验大纲: 序号 实验名称 内容要求 通过在不同环境编译运行一个Java编程环境,认识Java程序结构。 编写程序,练习使用Java控制结构,实现循环嵌套与选择嵌套等复杂结构。 编写程序实现类和对象的操作,掌握构造函数与静态成员的使用。 实验 每组 实验 开出 学时 人数 属性 要求 2 1 综合 必做 1 Java运行环境 2 基本编程语句 4 1 综合 必做 3 对象和类 4 继承与多态 5 4 1 综合 必做 1 综合 必做 1 综合 必做 编写程序实现类的继承、多态的实现。 4 4 抽象类、接口与编写程序实现类的继承、与接口的编内部类 写。 编程实现处理异常的语句,理解处理与抛出的区别,学会自定义异常。 用输入输出流实现从一个文本文件中读写简单数据。 6 异常 2 1 综合 必做 7 流 8 泛型与容器 9 图形用户界面 10 JDBC基础 11 网络编程 2 1 综合 必做 1 综合 必做 1 综合 必做 1 综合 必做 1 综合 必做 编程实现set、list与map的简单应用。 4 用图形界面工具,结合事件处理机制,实现一个可视化的计算器。 使用JDBC方式执行数据库基本操作 编程实现基于UDP和TCP的通讯。 6 2 2 目 录
实验一、JAVA运行环境 ..................................................................................................................... 1 附录1 Test1.java............................................................................................................................ 11 附录2 Test2.java............................................................................................................................ 11 附录3 Test3.java............................................................................................................................ 11 附录4 Test4.java............................................................................................................................ 11 附录5 Test5.java............................................................................................................................ 11 附录6 Test6.java............................................................................................................................ 11 附录7 Test7.java............................................................................................................................ 12 附录8 Test8.java............................................................................................................................ 12 附录9 Test9.java............................................................................................................................ 12 附录10 Test10.java........................................................................................................................ 12 实验二、基本编程语句 .................................................................................................................... 13 实验三、对象和类(一) ................................................................................................................ 13 附录1 ClassLoadTest.java ............................................................................................................. 19 附录2 PassValueTest.java ............................................................................................................. 19 附录3 StaticTest.java .................................................................................................................... 19 实验三、对象和类(包) ................................................................................................................ 21 附录1 附录2 附录3
Pclass.java ..................................................................................................................... 23 TestPackage.java ........................................................................................................... 23 TestPackage.java ........................................................................................................... 23
实验三、对象和类(二) ................................................................................................................ 24 实验四、继承与多态(一) ............................................................................................................ 26 附录1 Employee.java .................................................................................................................... 28 附录2 TestM.java .......................................................................................................................... 28 附录3 TestM.java .......................................................................................................................... 29 实验四、继承与多态(二) ............................................................................................................ 32 实验五、抽象类、接口 .................................................................................................................... 34 附录1
TestAbsctract.java ......................................................................................................... 36
实验六、异常 .................................................................................................................................... 37 附录1 NonException.java ............................................................................................................. 39 附录2 附录3
CatchException.java ...................................................................................................... 39 ThrowCatchException.java ........................................................................................... 39
实验七、流 ........................................................................................................................................ 40 附录1 FileExample.java ................................................................................................................ 42 附录2 WriteFile.java ..................................................................................................................... 42 附录3 ReadFile.java ...................................................................................................................... 43 附录4 FileTools .java .................................................................................................................... 43 实验八、泛型与容器 ........................................................................................................................ 45 附录1
StringStack.java ............................................................................................................. 47
实验九、JAVA图形用户界面(一)................................................................................................ 48 实验九、JAVA图形用户界面(二)................................................................................................ 57
I
附录1 JFileChooser代码片段 ...................................................................................................... 60 附录2 JOptionPane代码片段 ...................................................................................................... 60 附录3 SimpleTree.java .................................................................................................................. 60 附录4 SimpleTable.java ................................................................................................................ 61 实验十、JDBC .................................................................................................................................. 64 附录1 JdbcTest.java ...................................................................................................................... 65 附录2 jdbc.properties(MS SQL2000) ...................................................................................... 66 附录2 jdbc.properties(MS SQL2005) ...................................................................................... 66
II
实验一、Java运行环境
1.实验目的
(1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。
(2)了解在该系统上如何编辑、编译、连接和运行一个Java程序。
(3)通过运行简单的Java程序,初步了解Java源程序的结构和特点。
应学会在命令行和Jbuilder 2005环境下的编译、运行程序的方法。
2.实验内容和步骤
(l)检查所用的计算机系统是否已安装了JDK,并确定它所在子目录。如果使用的是Windows操作系统,可以按以下步骤进行:
①
单击Windows桌面上的\开始\按钮,在菜单中 选择\命令
提示符\命令;或者单击Windows桌面上的\开始\按钮,在菜单中 选择\运行\命令,在弹出的打开对话框中输入“cmd”回车,屏幕上即可出现\命令提示符\窗口。
②
在命令行窗口中输入“java”回车,如果有提示,表示本
机器已安装JRE,可以运行Java程序。根据提示,思考如何查看当前JRE的版本。
③
在命令行窗口中输入“javac”回车,如果有提示,表示本
机器已安装JDK并且正确配置了环境变量,可以编译、运行Java程
1
序。
(2)在命令行环境下编译和运行Java程序(HelloWorld .java) ① ②
在d盘新建文件夹myjava。
打开记事本工具,从键盘输入以下程序:
/**
* 此类用于在屏幕上显示消息。 */
public class HelloWorld { /**
* 这是一个 main 方法 */
public static void main(String [] args) { /* 输出此消息 */
System.out.println(\欢迎来到 Java 世界!\ } }
③ 保存文件,点击菜单“另存为”命令,保存位置选择①中
建立的文件夹myjava下,文件名填写“HelloWorld.java”,保存类型一定要选“所有文件”。
④
打开命令行窗口,将当前目录定位到③保存的目录
⑤ ⑤
运行“javac HelloWorld.java”命令。
如果编译产生错误,根据给出的错误提示修改源程序,再
进行编译。重复此过程,直到编译完全正确为止。
⑥
使用资源管理器打开源文件保存的目录,观察class文件的
2
名字。
⑦
在命令行窗口运行“java HelloWorld”命令,分析程序运行
结果是否正确,如果不正确或认为输出格式不理想,可以修改程序,然后重新执行以上④至⑦步骤。
(3)按照以上方法完成以下练习。 ①
用最快的速度调试附录1—9的多个程序直至正确运行,分
别记录其错误原因、调试过程及最终运行结果。(提示:可以复制粘贴源代码)
②
在不看任何提示的情况下,自己单独编写一个最简单的
HelloWorld类。(警告:一定不要复制粘贴或照抄代码,否则没有任何意义)
(4)检查所用的计算机系统是否已安装了Eclipse,并确定它所在子目录。
(5)在Eclipse环境下编译和运行Java程序,在第一次上机时,按以下步骤建立和运行Java程序:
①
先进入 Eclipse环境。
3
② 点击菜单“File”—>“new”—>“project...”,在弹出的窗
口中选择工程类型Java project,点击next按钮;填写工程名 “myjava”,点击“Finish”按钮结束。
4
5
6
③ 在左侧工程文件夹myjava上点右键,点击“New”—>“Class”;在弹出的窗口,填写类名“MyCalss”,点击“Finish”按钮结束。
7
8
④ 参照以下代码补充Eclipse自动生成的源文件
public class MyClass { String name;
public MyClass (String name){ this.name=name; }
private void show(){
System.out.println(\ }
public static void main(String[] args) { MyClass h=new MyClass (\张三\ h.show(); } }
⑤ 在项目窗口中选择要运行的类MyClass类,右键后选择“run
as”→“Java Application”运行该类。
⑧
观察和分析编译信息观察屏幕的变化。在输出窗口应显示
程序运行结果。分析结果是否正确,如果不正确或认为输出格式不理想,可以修改程序,然后重新执行以上④至⑧步骤。
9
3 .预习和复习内容
教材第2章,希望大家能在实验中多思考,多给自己提问题,多设想几种可能。做实验时不要满足于验证书本知识。在以后的实验中,请读者自己设计具体的实验步骤,尽可能自己补充增加一些内容,以提高自己的实践能力。
10
附录1 Test1.java
public class Test1{
public static void main(String [] args) {
System.out.println(\欢迎来到 Java 世界!\ } }
附录2 Test2.java
public class Test2{
public static void main(String [] args) {
system.out.println(“欢迎来到 Java 世界!”); } }
附录3 Test3.java
public class Test3{
public static void main(string [] args) {
System.out.println(\欢迎来到 Java 世界!\ } }
附录4 Test4.java
pubilc class Test4{
public static void mian(String [] args) {
system.out.println(\欢迎来到 Java 世界!\ } }
附录5 Test5.java
public class Test5{
public static int main(String [] args) {
System.out.println(\欢迎来到 Java 世界!\ } }
附录6 Test6.java
public class Test6{
public void main(String [] args) {
System.out.println(\欢迎来到 Java 世界!\ } }
11
附录7 Test7.java
public class Test7{
public static void main() {
System.out.println(\欢迎来到 Java 世界!\ } }
附录8 Test8.java
public class Test8{
static void main(String [] args) {
System.out.println(\欢迎来到 Java 世界!\ } }
附录9 Test9.java
public class Test9{ }
public static void main(String [] args) {
System.out.println(\欢迎来到 Java 世界!\}
附录10 Test10.java
public class Test10{
public static void main(String [] baidu) {
System.out.println(\欢迎来到 Test10世界!\} }
class Test11{
public static void main(String [] google) {
System.out.println(\欢迎来到 Test11世界!\} }
12
实验二、基本编程语句(一)
1.实验目的
(1)掌握简单的Java程序的编写和调试方法。
(2)掌握Java程序中使用最多的语句― 赋值语句和输入输出的使用方法。
(3)掌握结构化程序的3种基本结构(顺序结构、选择结构、循环结构)在Java中的实现。
2.实验内容和步骤
上机输入程序并调试运行程序。
(1)分析以下代码会打印哪些内容,并通过程序验证自己的判断:
a)
public class Elementary {
public static void main(String[] args) { int i=1234578900+987543210; System.out.println(i); long j=1234578900+987543210; System.out.println(j); long k=1234578900+987543210L; System.out.println(k); long l=1234578900L+987543210L; System.out.println(l); } }
b)
public class Elementary2 {
public static void main(String[] args) {
System.out.println(\ System.out.println('H'+\ String s=\ char c=65;
13
} }
int i=1;
System.out.println(c); System.out.println(i); System.out.println(c+1); System.out.println(c++); System.out.println(c+i); System.out.println(s+c); System.out.println(s+i); System.out.println(s+c+i); System.out.println(i+c+s); s=s+i;
System.out.println(s); s=s+c;
System.out.println(s);
c)
import javax.swing.*; public class Option {
public static void main(String[] args) { String name=JOptionPane.showInputDialog(\ String input=JOptionPane.showInputDialog(\ int age=Integer.parseInt(input); String title=\ String message=\ JOptionPane.showConfirmDialog(null,
message, title,JOptionPane.CLOSED_OPTION); } }
(2)编程从键盘输入1个整数,计算其平方值并输出。 (3)编程从键盘输入2个不同的整数,按照从小到大顺序输出。 (4)编程从键盘输入一个整数,在屏幕上打印出它的阶乘。 (5)编程从键盘输入10个实数到数组,分别统计正数的和、负数的和,然后输出统计结果。
3.预习和复习内容 教材第3章。
14
实验二、基本编程语句(二)
1.实验目的
(1)掌握简单的Java程序的编写和调试方法。
(2)掌握Java程序中使用最多的语句― 赋值语句和输入输出的使用方法。
(3)掌握结构化程序的3种基本结构(顺序结构、选择结构、循环结构)在Java中的实现。
(3)掌握字符串和数组的常用属性和方法。 2.实验内容和步骤
(1)根据个人水平完成以下一组编程题并调试运行程序。 基础题
① 从键盘输入3个不同整数,按照从小到大顺序输出。(程序中
不能使用循环)
② 从键盘录入5个整数,然后由大到小排序。(必须使用循环)
③ 编程在屏幕上打印出100以内的所有素数。
④ 从键盘输入12个数存入二维数组(3*4)中,编写程序求出
最大元素的值及它所在的行号和列号。 ⑤ 见电子附件attach2-1.rar 进阶题
① 基础题最后一道题
② 从键盘输入7个数存入二维数组中,编写程序求出最大元素
的值及它所在的行号和列号。
15
③ 采用二维数组输入多个学生三门课的成绩,分别求出每个学
生的平均成绩和每门课的成绩。
④ 编写猜数游戏,在程序中设定一个整数,从键盘上反复由其
他用户输入数据进行猜测。如果未猜中,程序提示输入过大或者过小;如果猜中,则输出猜的次数,最多允许猜5次。 ⑤ 将以上程序中设定的整数换为随机数。(提示:查找学习
java.util.Random类的用法) 3.预习和复习内容 教材第3章。
16
实验三、对象和类(一)
1.实验目的
(1)结合面向对象思想掌握类的定义以及类中成员的定义,学会设计自己的类。
(2)掌握方法重载、尤其是构造方法的重载,深入理解构造函数的作用与调用时机。
(3)理解this关键字同static关键字的意义,掌握成员变量的具体隐藏实现。
(4)理解对象同对象引用间的区别,掌握创建对象与调用对象成员的方法,以及对象作为参数与基本数据类型变量做参数的区别。
2.实验内容和步骤
上机输入程序并调试运行程序。
(1)编译并运行附件1和附件2,观察结果分析其原因。 (2)编译附件3,分析结果;将“注释这行”所在的行注释,再将注释的call2方法和main方法中的“StaticTest.call2(obj);”去掉注释,再次编译,观察结果分析其原因。
(3)定义一个圆类Circle,至少具有私有成员变量:radius(double型,用于保存半径)、area(double型,用于保存面积)、length(double型,用于保存周长),以及成员方法setRadius、getRadius(用于设置、获取半径)、getArea(用于获得面积)、getLength(用于获取周长)、print(打印圆对象的半径、面积、周长信息)。
a) 在main方法,要求方法中通过“Circle c1=new Circle();
17
Circle c2=new Circle(100);”分别新建半径为1和半径为100的圆对象,分别打印c1同c2的信息;
b) 使c2的半径等于c1的半径,使c1的半径等于原c2的半径,分别打印c1同c2的信息;
(4)定义一个日期类MyDate,至少具有私有成员变量:year、month、day,以及成员方法setYear、getYear等(具体隐藏实现方法,用于设置、获取成员变量)、isRunyear(boolean型,判断当前对象保存的年是否为闰年)、print(打印日期对象的年\\月\\日信息)。
a) 在main方法,要求方法中通过“MyDate d1=new MyDate(); MyDate d2=new MyDate(2009,4,1);”分别新建年月日为1999年1月1日的日期对象和年月日为2009年4月1日的日期对象,分别打印d1同d2的信息;
(5)使d2的年等于d1的年,使d1的月等于原d2的月,分别打印d1同d2的信息;
3.预习和复习内容 教材第4章。
18
附录1 ClassLoadTest.java
package ch3;
public class ClassLoadTest{ static{ System.out.println(\ }
public static void main(String [] args) {
} }
附录2 PassValueTest.java
package ch3;
public class PassValueTest { private int i = -100; public void test1(int b) { b = 100; } public void test2(PassValueTest b) { b.i = 100; } public void test3(PassValueTest b) { b = this; } public static void main(String[] args) { PassValueTest obj = new PassValueTest(); int temp = 100; obj.test1(temp); System.out.println(temp); obj.test2(obj); System.out.println(obj.i); obj.i=100; PassValueTest newobj = new PassValueTest(); obj.test3(newobj); System.out.println(newobj.i); } }
附录3 StaticTest.java
package ch3;
public class StaticTest { public static void call1(){
19
/* */ }
}
staticmethod();
nonstaticmethod(); //注释这行
public static void call2(StaticTest o1){ o1.nonstaticmethod(); StaticTest o2=new StaticTest (); o2.nonstaticmethod(); }
public void nonstaticmethod(){ System.out.println(\非静态方法被调用\}
public static void staticmethod(){ System.out.println(\静态方法被调用\}
public static void main(String[] arg){ StaticTest obj=new StaticTest (); StaticTest.call1(); StaticTest.call2(obj); }
20
实验三、对象和类(包)
1.实验目的
(1)理解包的意义,学会定义、编译和运行一个包内的类,熟练掌握外部包中具体类和全部类的导入方式,理解包带来的一种新的java访问控制机制。
2.实验内容和步骤
(1)在NetBeans或Eclipse等其他集成开发环境中分别新建名为com.yourname.ch3和com.yourname.other的两个包。
(2)将附件1、附件2、附件3添加到工程中,注意附件1和附件2应该放在名为“com.yourname.ch3”的包中,附件3应放在名为“com.yourname.other”的包中。分别调试3个源文件,保证都能编译成功。
① 在附件2、附件3的main方法中添加语句“Pclass pc=new Pclass();”,分别编译它们会出现什么结果,说明什么?
② 将附件3中的“Pclass pc=new Pclass();”改为“com.yourname.ch3.Pclass pc=new com.yourname.ch3.Pclass();”再编译会出现什么结果,为什么?用import导入包com.yourname.ch3后,再改为“Pclass pc=new Pclass();”可否通过编译?
③ 在附件2、附件3的main方法中继续添加语句“Dclass dc=new Dclass();”,分别编译它们会出现什么结果,说明什么?从附件3删除“Dclass dc=new Dclass();”,保证附件3能编译通过。
④ 在附件2、附件3的main方法中继续添加语句
21
“pc.method1();”,分别编译它们会出现什么结果,说明什么?
⑤ 在附件2、附件3的main方法中继续添加语句:“
pc.method1();
pc.method2(); pc.method3(); pc.method4();
”分别编译它们会出现什么结果说明什么(仔细分析两个编译结果的不同之处)?删除不可执行的语句确保保证附件2、3都能编译通过。
⑥ 在附件2的main方法中继续添加语句:“
dc.method1(); dc.method2(); dc.method3(); dc.method4();
”编译附件2会出现什么结果说明什么? 3.预习和复习内容 教材第4章
22
附录1 Pclass.java
package com.yourname.ch3; class Dclass { //default class public void method1(){ System.out.println(\ } protected void method2(){ System.out.println(\ } void method3(){ System.out.println(\ } private void method4(){ System.out.println(\ } }
public class Pclass { //public class public void method1(){ System.out.println(\ } protected void method2(){ System.out.println(\ } void method3(){ System.out.println(\ } private void method4(){ System.out.println(\ } }
附录2 TestPackage.java
package com.yourname.ch3; public class TestPackage{
public static void main(String [] rgs){ } }
附录3 TestPackage.java
package com.yourname.other; public class TestPackage{
public static void main(String [] rgs){ }
23
实验三、对象和类(二)
1.实验目的
(1)结合面向对象思想掌握类的定义以及类中成员的定义,学会设计自己的类。
(2)掌握方法重载、尤其是构造方法的重载,深入理解构造函数的作用与调用时机。
(3)理解this关键字同static关键字的意义,掌握成员变量的具体隐藏实现。
(4)理解对象同对象引用间的区别,掌握创建对象与调用对象成员的方法,以及对象作为参数与基本数据类型变量做参数的区别。
2.实验内容和步骤
上机输入程序并调试运行程序。
(1)定义一个圆柱体类Cylinder,至少具有私有成员变量:height(double型, 用于保存高)、radius(double型,用于保存半径),以及成员方法setRadius、getRadius等、getArea(用于获得表面积)、getTj(用于获得体积)、print(打印对象的高、半径、体积、底面积信息)。在main方法,要求方法中通过“Cylinder y1=new Cylinder(); Cylinder y2=new Cylinder(100, 20);”分别新建高为1、底面半径为1和高为100,底面半径为20的圆柱体对象,分别打印y1同y2的信息;
(2)在上一节实验中,曾经定义过一个圆面积类Circle,请在它的基础之上,重写编写(1)中的圆柱体类Cylinder。
提示,可以利用Circle类的对象表示圆柱体的底,思考这两个
24
类之间应该是继承还是组合关系。
(3)定义一个学生类Student,要求其包含name(String类型,保存姓名)、birthday(上一节定义过的MyDate类型,用以保存生日)以及成员方法set、get等、print(打印对象信息)。在main方法,要求方法中通过“Student s1=new Student(); ”新建姓名为\、生日为1999年1月1日的对象,再通过类似“Student s2=new Student(\张三\”的方法新建与你自己信息相同的学生对象,分别打印s1同s2的信息;添加新的构造函数,以便能够通过“Student s3=new Student(\张三\MyDate()); Student s4=new Student(\张三\”语句创建的两个新对象,并分别打印其信息;
(4)在Cylinder和Student的默认构造方法中应用this方法,使之自身不包含初始化语句,而是通过自定义构造函数初始化成员变量。
(5)根据个人能力选择实现《数据结构》一课中学过的栈Mystack或单链表MyLinkList。(此题不写在实验报告中)
3.预习和复习内容 教材第4章。
25
实验四、继承与多态(一)
1.实验目的
(1)结合面向对象思想,熟练掌握子类的定义以及子类构造方法的定义,理解子类构造函数调用顺序。
(2)掌握父类方法的重写、深入理解子类中对父类成员的访问权限。
(3)理解Object的意义,掌握自定义类的toString()、equals()方法的实现。
(4)理解向上转型和向下转型,以及多态的目的和意义,掌握多态的常用形式。
2.实验内容和步骤
(3)在上一次实验中,曾经定义过圆面积类Circle、日期类MyDate,请重写它们toString和equals方法。在main方法中新建c1、c2两个默认Circle对象,d1、d2两个默认MyDate对象,分别通过equals方法比较;通过set方法修改c2和d2的成员变量值后,再分别通过equals方法比较;
注意,应比较重写toString方法前后,System.out.println(c1);System.out.println(d1)的结果。
(4)已知Employee类的定义(附录1),为其编写一个子类TempEmployee,其基本工资为500,计算工资办法为:工资=基本工资+奖金;如需要可以修改Employee类属性的访问修饰符。
(5)调试TestM.java(附录3 ),掌握向上转型与向下转型;
26
(6)分析TestM.java(附录2 ),Swan重写了父类的若干方法,其中哪些重写不成功,为什么?
3.预习和复习内容 教材第5章。
27
附录1 Employee.java
public class Employee{ private String name; private String department; private double basicpay; private double pay; Employee(){ this(\ } Employee(String n, String d, double bp){ name=n; department=d; basicpay=bp; } public double getPay(){ pay=basicpay; return pay; } public String toString(){ return \ } }
附录2 TestM.java
class Bird { String name; Bird(String n) { name = n; }
final public void fly() {
System.out.println(name + \ }
public void fly(int number) {
System.out.println(name + \ }
protected void shout() {
System.out.println(name + \ }
private void shout(int number) {
System.out.println(name + \ }
28
}
class Swan
extends Bird { Swan(String n) { super(n); }
public void fly() {
System.out.println(name + \ }
private void fly(int number) {
System.out.println(name + \ }
protected void shout() {
System.out.println(name + \ }
private void swim() {
System.out.println(name + \ } }
public class TestM {
public static void main(String[] args) { Bird b1 = new Bird(\小小鸟\ Swan b2 = new Swan(\小天鹅\ b2.fly(); b2.swim(); } }
附录3 TestM.java
class Bird { String name; Bird(String n) { name = n; }
public void fly() {
System.out.println(name+\ }
public void shout() {
System.out.println(name+\ }
public void shout(int number) {
29
System.out.println(name+\ } }
class Swan extends Bird { Swan(String n) { super(n); }
public void fly() {
System.out.println(name+\ }
public void shout() {
System.out.println(name+\ }
public void swim() {
System.out.println(name+\ } }
class Duck extends Bird { Duck(String n) { super(n); }
public void fly() {
System.out.println(name+\ }
public void shout() {
System.out.println(name+\ }
public void swim() {
System.out.println(name+\ } }
public class TestM {
public static void main(String[] args) { Bird b1 = new Bird(\小小鸟\ Bird b2 = new Swan(\小天鹅\ Bird b3 = new Duck(\唐老鸭\
/*分析以下语句编译错误的原因*/ //b1.swin(); //b2.swin();
30
//b3.swin();
//(Duck)b3.swim();
/****************************/
/*先分析以下语句的运行结果,再执行验证*/ b1.fly(); b2.fly(); b3.fly();
b1.shout(1); b2.shout(2); b3.shout(3);
Swan s2=(Swan)b2; s2.swim();
s2=(Swan)b1; s2.swim();
s2=(Swan)b3; s2.swim();
((Duck)b3).swim();
/****************************/ } }
31
实验四、继承与多态(二)
1.实验目的
(1)结合面向对象思想,熟练掌握子类的定义以及子类构造方法的定义,理解子类构造函数调用顺序。
(2)掌握父类方法的重写、深入理解子类中对父类成员的访问权限。
(3)理解Object的意义,掌握自定义类的toString()、equals()方法的实现。
(4)理解向上转型和向下转型,以及多态的目的和意义,掌握多态的常用形式。
2.实验内容和步骤
(1)设计一个形状类Shape,包含一个getArea()方法,该方法不包含实际语句。
(2)在Shape类基础上设计圆形、矩形、三角形和梯形四个子类,要求根据实际形状重写getArea()方法。
(3)设计一个TestShape类,包含变量area(存储总面积)、静态方法countArea(Shape s),该方法负责把参数中的形状面积加入到area中。在main函数中新建(2)中四种类型的对象s1、s2、s3、s4,通过调用countArea方法把四个对象面积累加到area中,最后输出area。
(4)选做。设计在数据结构中学过的单链表类MyLinkList,该类包含头结点,以及插入节点、删除节点、打印单链表等函数。
32
提示,首先编写节点类MyNode,该类包含int型变量date(存储数据)和MyNode型对象next(存储下一个节点)。MyLinkList类中包含MyNode类对象headnode。
3.预习和复习内容 教材第5章
33
实验五、抽象类、接口
1.实验目的
(1)理解抽象类的意义和实际应用的一般模式,熟练掌握抽象类和抽象方法的定义以及抽象类的继承,尤其是子类是非抽象类的情况。
(2)理解接口的意义、实际应用的一般模式及与抽象类的区别,熟练掌握接的定义以及接口的继承和实现。
2.实验内容和步骤
(1)将实验四中形状类Shape的getArea()改为抽象方法,在不修改四种形状子类和测试类TestShape的基础上,保证执行TestShape能够得到与实验四同样的结果。
(2)将实验四中形状类Shape改为接口,在不修改测试类TestShape的基础上,保证执行TestShape能够得到与实验四同样的结果。
(3)将附件1添加到工程,调试后保证源程序能编译成功,画出附件1中多个类间的关系图,按以下步骤调试程序。注,以下5步没有先后关系。
① 将AbsClass类前面abstract删掉,编译会出现什么结果,为什么?
② 将AbsClass类中的abstract void absMethod();改为abstract void absMethod(){},编译会出现什么结果,为什么?
③ 删除AbsClass类中的absMethod()方法,AbsClass类可否通
34
过编译?
④ 将AbsSubClass类前面abstract删掉,编译会出现什么结果,为什么?
⑤ 将SubClass中的absMethod方法改名为absMethod2,编译会出现什么结果,为什么?
(4)在TestAbsctract的main方法中添加“
SubClass sc=new SubClass(); AbsClass ac=new AbsClass();
”,编译会出现什么结果,为什么? (5)在TestAbsctract的main方法中添加“
SubClass sc=new SubClass(); AbsClass ac;
”,编译会出现什么结果,为什么? (6)在TestAbsctract的main方法中添加“
SubClass sc=new SubClass(); AbsClass ac=new SubClass(); AbsClass ac2=sc; sc.absMethod(); ac.absMethod(); ac2.absMethod();
”,可否通过编译,为什么? 3.预习和复习内容 教材第6章
35
附录1 TestAbsctract.java
abstract class AbsClass{ abstract void absMethod(); void commMethod(){ System.out.println(\ } }
abstract class AbsSubClass extends AbsClass{ void commMethod3(){ System.out.println(\ } }
class SubClass extends AbsClass{ void absMethod(){ System.out.println(\ } }
public class TestAbsctract { public static void main(String [] rgs){ } }
36
实验六、异常
1. 实验目的
(1)理解Java异常处理机制,理解为什么程序设计中需要异常、没有异常之前程序的遇到异常的结果。
(2)掌握Exception的分类,能够分辨哪些异常属于运行时异常,哪些异常属于已检查异常。
(3)掌握异常处理结构try、catch、finally,理解异常出现时和不出现时程序的执行流程。
(4)学会使用throw抛出异常,掌握何时选择处理异常何时选择抛出异常。
(5)学会使用throws声明为可能抛出异常的方法,掌握哪些方法必须声明可能抛出的异常。 2. 实验内容和步骤
(1)比较附录1、附录2、附录3中的程序有何异常,分析运行的结果有何不同,再编译运行它们验证你的想法。
(2)将附录5中main函数后面的“throws Exception”去掉再编译会怎么样,为什么?
(3)在实验三中曾经实现过日期类MyDate,它包含一个含参数的构造方法MyDate(int year, int month, int day)、以及三个相应的设置方法setXXX(int arg)。
① 现编写一个自定义的异常InvalidDateException。当构造方法或设置方法接受的参数不符合实际要求时,抛出一个这个异常的实
37
正在阅读:
Java程序设计实验指导书05-22
八年级湖南地方文化常识教案03-19
浅谈建筑工程项目管理05-27
2018年11月浙江省普通高中学业水平模拟考试英语仿真模拟试题A Word考试版01-23
安全操作规程04-06
06 Manual Handling Risk Assessment by Steve Carey07-24
细节决定成败演讲稿02-25
LCM不良命名规范09-19
鄂教版小学语文毕业考试模拟试卷1411-10
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 指导书
- 程序设计
- 实验
- Java
- 尔雅(超星)马克思主义基本理论课后作业答案整理
- 最新北师大版2017-2018年四年级下册数学期末试卷
- 恩格斯:《反杜林论》简介
- 2××区政府大厦物业管理方案(54页)
- 汽修毕业论文
- 山东省宁阳四中2014-2015学年高二下学期第5周每周一练历史试题含
- 江苏省南师附中等四校2013届高三下学期期初教学质量调研语文试题
- 课时13 一元一次不等式
- 乙肝两对半定量检测的临床意义
- 基于亚龙YL335B自动生产线分拣站的控制 - 副本
- 2#炉省煤器大修施工方案06.8
- 《综合知识》模拟试卷1
- 感染科护士的职业危害及防护措施
- 第11周国旗下讲话8
- 塑料把项目可行性研究报告(发改立项备案+2013年最新案例范文)
- 110kV变电站一次部分设计
- 2018年汽车散热器行业现状及发展趋势分析 (目录)_ss
- (定稿)会计学习题集
- 16春《现代远程学习概论》作业答案
- 中国脂肪酸酰胺行业市场前景分析预测年度报告(目录) - 图文