当前位置:首页 > java实验2语言面向对象编程技术
广州大学学生实验报告
开课学院及实验室:计算机科学与工程实验室 2012年11 月 12 日学院 实验课程名称 实验项目名称 计算机科学与教育软件学院 年级/专业/班 软工姓名 105班 学号 成绩 指导老师 0 陈康民 JAVA语言实验 Java 语言面向对象编程技术 (***报告只能为文字和图片,老师评语将添加到此处,学生请勿作答***)
一、实验目的
(1)理解类的定义; (2)掌握对象的声明;
(3)学会使用构造函数初始化对象; (4)使用类的数据和方法。 (5)弄懂类的重载; (6)静态成员的使用;
(7).搞清static嵌套类的用法限 二、实验内容
1.对象的创建和使用
2 类的静态成员与实例成员 3 变量的作用域和this 关键字 4 方法重载
5 子类的派生与方法覆盖 6 多态性与动态绑定 三、实验原理 java
程序编写与编译原理
四、实验设备
Java JCreator,PC 五、实验要求
1)掌握多态性在继承中的运用; (2)理解动态绑定的含义; (3)学会使用抽象类; (4)了解成员变量的隐藏。 六、实验程序
1.对象的创建和调用对象的创建和调用对象的创建和调用对象的创建和调用 编写一个圆环类Ring的java程序,圆环类有3个数据成员,分别是内半径innerRadius,外半径outRadius和颜色color,这些属性可以查看get也可以重新设置set,另外,圆环还可以返回其面积area。 //Ring.java
public class Ring {
private double innerRadius; private double outerRadius;
public String color;
public Ring(double iRadius, double oRadius, String c)
{ innerRadius = iRadius; outerRadius=oRadius;// 代码1 //初始化外半径 color = c; } public double getInnerRadius() { return innerRadius; //返回内半径 } public double getOuterRadius() { return outerRadius; }
public void setInnerRadius(double iRadius) { innerRadius = iRadius; } public void setOuterRadius(double oRadius) { outerRadius = oRadius; } public void setColor(String c) { color=c; //设置颜色 } public double getArea()
{ return (outerRadius * outerRadius - innerRadius * innerRadius) * 3.1415; } public static void main(String[] args)
{ Ring ring = new Ring(5, 8, \ System.out.println(\圆环的内半径:\+ ring.getInnerRadius());
System.out.println(\圆环的外半径:\ System.out.println(\圆环的颜色:\
System.out.println(\圆环的面积:\ ring.setInnerRadius(4); ring.setOuterRadius(6);
// 代码4 //设置圆环ring的外半径为6 ring.setColor(\ System.out.println(\圆环的内半径:\
System.out.println(\圆环的外半径:\ System.out.println(\圆环的颜色:\
System.out.println(\圆环的面积:\ } }
运行结果
思考:
1.如果将上面的Ring ring = new Ring(5, 8, \改为Ring ring = new Ring();有错误产生吗?为什么?
解:有,因为函数初始化时函数是有参数的,如果改为Ring ring = new Ring();则没有参数,系统则不能调用函数,也就是说找不到这样的函数,所以错。
2.在1的基础上在添加 如下函数,还会出现上述错误吗? public Ring() {
innerRadius = 1;
outerRadius=2;// 代码1 //初始化外半径 color = \ }
解:不会,因为这里函数里面已经有Ring();函数,也就是说系统能找到函数与主函数相对应;所以不会产生错误。结果为:
2.类的静态成员和实例成员
编写一个圆类Circle,其中有圆周率,半径和Circle类所含有的圆对象个数等成员字段,其中圆周率和圆对象个数为static成员,circie中还有两个static方法分别是设置圆周率和显示当前对象个数.
//StaticTest.java class Circle { static double pi = 3.14; static int objectNo = 0; int radius; Circle(int r) { radius = r; objectNo++; } Circle() { radius = 2;
objectNo++; } double getArea() { return pi * radius * radius; } static void setPI(double p) { pi = p; } void setRadius(int r) { radius = r; } static void displayNo() { System.out.println(\当前圆对象个数是:\ } }
class StaticTest {
public static void main(String args[]) { Circle cir1 = new Circle(5); System.out.println(\圆周率是:\ System.out.println(\的半径是:\ System.out.println(\的面积是:\ cir1.displayNo(); cir1.setRadius(10); Circle cir2 = new Circle(); cir2.setPI(3.1415); System.out.println(\圆周率是:\ System.out.println(\的半径是:\ System.out.println(\的半径是:\ System.out.println(\的面积是:\ cir2.displayNo(); } }
七、总结心得
1. 实验代码繁多,容易出现错误; 2. 申明对象时要申请空间,例如
3. 注意static嵌套类的用法限制
4. 实验1中开始调用Ring()时产生错误,这是因为程序中只有Ring(int,int,char) 后来 添加public Ring() {
innerRadius = 1; outerRadius=2;// color = \ }
程序便能正确编译
5. 实验4,方法重载中,因为是通过参数不同进行调用。
6. 实验2如果// System.out.println(\圆周率是:\+ cir1.pi); // cir1.displayNo();如果上面两条语句改为如下System.out.println(\圆周率是:\一样能运行,因为这是通过Circle调用参数,如果再改cir1.setRadius(10);为Circle.setRadius(10);则出现错误,因为不能调用非静态函数。
共分享92篇相关文档