提示,首先编写节点类MyNode,该类包含int型变量date(存储数据)和MyNode型对象next(存储下一个节点)。MyLinkList类中包含MyNode类对象headnode。
3.预习和复习内容 教材第5章
38
实验五、抽象类、接口
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类可否通
39
过编译?
④ 将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章
40
附录1 TestAbsctract.java
class abstract 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){ } }
41
实验六、异常
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。当构造方法或设置方法接受的参数不符合实际要求时,抛出一个这个异常的实
42