《java实验报告3》

《java实验报告3》
《java实验报告3》

项目二

实验一

实验内容:

1.(1)阅读如图2.1所示程序。该程序实现了一个圆环类Ring,该类有3个属性,分别是内半径innerRadius,外半径outerRadius和颜色color,这些属性可以自行设置也可以得到其值,并且该程序还可以返回圆环的面积Area。

图2.1

(2)新建Ring.java文件,输入程序,将程序中“代码1-4”处补充完整并保存。

(3)使用DOS命令进入其所存放的目录,编译运行该程序。并将完整程序和运行结果截图写入实验报告。

实验分析:

类的定义,对象的声明。

实验程序:

实验结果截图:

实验问题分析:

实验中,主要出现两个问题

(1)中英文分号输入错误

(2)编写程序时,对象的大小写错误,导致找不到该符号

编写程序,运行前,应该进行检查。

实验二

实验内容:

2.阅读如图2.2所示程序。该程序实现了一个圆类Circle,该类有3个属性,分别是圆周率pi,半径radius和圆对象个数objectNo,其中圆周率和圆对象个数为static成员。并且该程序还有两个static方法用来设置圆周率和显示当前圆对象个数。

图2.2

(2)新建Circle.java文件,输入程序并保存。

(3)使用DOS命令进入其所存放的目录,编译运行该程序。分析观察运行结果并将运行结果截图写入实验报告。

(4)能否将程序中的cir1.setRadius(10)改为Circle.setRadius(10)?为什么?将圆周率pi的static修饰符去掉,会出现什么结果?为什么?将setPI(d ouble p)的 static修饰符去掉呢?圆对象个数objectNo为什么要设置为stat ic,它的作用是什么?将你的分析写入实验报告。

实验分析:

(4)cir1.setRadius(10)不能改为Circle.setRadius(10),因为Circle是定义的方法,它是一个类,cir1是它实例化的一个对象。必须是对象调用方法才有意义。就好比具体的是哪个人相互比较才有意义。

一起将圆周率pi的static去掉,程序结果第二个pi发生微小的变动。将圆周率pi的static修饰符去掉,会出现错误:无法从静态上下文中引用非静态的变量pi。然而,将setPI(double p)的 static修饰符去掉,程序结果不变。

static修饰的变量,是在程序中与别人共享的,意思是说,objectNo设置为static之后,每增加一个圆,objectNo自动加1,从而记录圆的个数。

比如,修改前,

修改后:

很明显,修改后的当前圆的个数记录的已经出现错误。

实验程序:

实验截图:

实验问题总结:

方法调用时,发生错误。

比如:

少了()。

实验三

实验内容:

3.阅读如图 2.3所示程序。该程序实现了一个父类Telephone和其子类Mobilephone,该类有电话品牌,电话号码等属性,另外还有计算话费和显示信息等方法。子类Mobilephone除了具有父类的属性外,还有网络类型,被叫时间等属性,另外它还有自己的计算话费和显示信息的方法。

图2.3

(2)新建Inheritance.java文件,输入程序,将程序中“代码1-5”处补充完整并保存。

(3)使用DOS命令进入其所存放的目录,编译运行该程序。并将完整程序和运行结果截图写入实验报告。

(4)Mobilephone类的display( )方法中的 callCost( )方法调用的是谁的方法?如何调用父类的callCost( )方法?另外,将Mobilephone类的构造方法中的super(b, num)去掉,有什么结果?为什么?将你的分析写入实验报告。

实验分析:

1(4)callCost( )调用的是子类中的方法,实际上callCost( )

方法已经被重写了。要调用父类的构造方法,可以使用关键字super调用。

super(b, num)去掉,将会出现

实际上是找不到父类的String b,String num这两个属性。

实验程序:

实验截图:

实验问题总结:

1.经常的出现,找不到类的符号,后来发现,是因为在编写程序的时候,没有

认识java的结构,复制粘贴,简单又能保证不出错误啊,有了教训。

2.文件名定义错误,导致

实验四

实验内容:

4.阅读如图2.4所示程序。该程序实现了三个类:抽象父类Student(包括了一些学生的基本信息,如姓名,所学课程,课程成绩等)和其子类Undergraduate,Postgraduate。两个子类之间的主要差别是计算课程成绩等级的标准有所不同。

图2.4

(2)新建Polymorphism.java文件,输入程序,将程序中“代码1-5”处补充完整并保存。

(3)使用DOS命令进入其所存放的目录,编译运行该程序。并将完整程序和运行结果截图写入实验报告。

(4)能否在main()方法中添加语句Students s1 = new Students ("陈建平")?为什么?main()方法中的语句students[i].calculateGrade()都是调用哪些类的calculateGrade()方法?将你的分析写入实验报告。

实验分析:

(4)不可以。因为,Students类没有在main()函数中定义,调用父类的属性的时候,并需要用方法调用。

分别调用了Undergraduate和Postgraduate中的calculateGrade()方法。这就验证了多态的性质。同一个方法,根据不同的需要,可以被重写。

实验程序:

实验截图:

实验问题总结:

1.没有认识到类名和构造的方法名必须相同,出现错误。

2.程序本身存在着小小错误。如:average=total/CourseNo; 这样才可以算出平均成绩。

相关主题
相关文档
最新文档