题目类别: 实验
关键字: 类的定义 对象的创建
内容要求:
步骤1:
定义一个圆环类Ring,该类中有3个数据成员,分别是环的内半径、外半径和填充颜色。同时该类拥有一个返回环面积的方法。
仔细阅读下面程序,并在创建Ring.java程序并编译。
思考题1:
三个数据域变量的初始默认值分别是什么?
构造方法Ring(double iRadius, double oRadius, String color)前面能否有返回值类型?
步骤2: 编写如下的测试类程序TestRing.java,并编译运行,查看运行结果。
步骤3: 把TestRing.java程序中的语句
Ring ring = new Ring(5, 8, “RED”);
替换为
Ring ring = new Ring();
重新编译程序。
思考题2:此时有什么错误发生?分析出错原因。
步骤4: 为Ring.java程序添加如下构造方法,重新编译Ring.java和TestRing.java程序。
思考题3:
观察是否还有错误发生,为什么?
2个Ring方法之间是什么关系?
步骤5:
在Ring.java程序中为圆环类Ring添加2个方法分别计算环的内圆和外圆的周长。
然后在TestRing.java的main方法中添加相应输出周长的语句。
重新编译程序并运行。
提交:打包为可以执行的JAR文档,其中要包含源程序文件。
备注
所有思考题的回答,用注释的方式写在源程序文件的相关代码前面。
实现代码:
Ring类
package ex01;
/**
思考题1:
三个数据域变量的初始默认值分别是什么?
构造方法Ring(double iRadius, double oRadius, String color)前面能否有返回值类型?
答:
三个数据域变量的初始默认值分别是0.0,0.0和null
构造方法Ring(double iRadius, double oRadius, String color)前面不能有返回值类型
*/
public class Ring {
double innerRadius; //内半径
double outerRadius; //外半径
String fillColor; //填充颜色
//构造方法,用于创建环的对象
public Ring(double iRadius, double oRadius, String color) {
innerRadius = iRadius; //初始化内半径
outerRadius = oRadius; //初始化外半径
fillColor = color; //初始化填充颜色
}
/**
思考题3:
观察是否还有错误发生,为什么?
2个Ring方法之间是什么关系?
答:
没有错误发生,因为该空参构造方法直接对Ring类内的3个变量进行赋值
2个Ring是对立关系,一个是Ring类的全参构造方法,另一个是Ring类的无参构造方法
*/
Ring(){
innerRadius=1;
outerRadius=2;
fillColor="WHITE";
}
//计算并返回环面积的方法
double getArea(){
return (outerRadius*outerRadius-innerRadius*innerRadius)*Math.PI;
}
//计算环的内圆周长
double getInnerPerimeter(){
return 2*innerRadius*Math.PI;
}
//计算环的外圆周长
double getOuterPerimeter(){
return 2*outerRadius*Math.PI;
}
}
TestRing类
package ex01;
/*
步骤2的运行结果为:
内半径:5.0
外半径:8.0
填充颜色:RED
环的面积:122.52211349000193
*/
/**
思考题2:此时有什么错误发生?分析出错原因。
java里的报错内容:
java:无法将类 ex01.Ring中的构造器 Ring应用到给定类型;
需要: double,double,java.lang.String
找到: 没有参数
原因: 实际参数列表和形式参数列表长度不同
出错原因:
定义Ring类时只定义了Ring类的全参构造方法,而没有定义Ring类的无参构造方法
*/
public class TestRing {
public static void main(String[] args) {
Ring ring=new Ring(5,8,"RED");
System.out.println("内半径:"+ring.innerRadius);
System.out.println("外半径:"+ring.outerRadius);
System.out.println("填充颜色:"+ring.fillColor);
System.out.println("环的面积:"+ring.getArea());
System.out.println("环的内圆周长:"+ring.getInnerPerimeter()); //周长
System.out.println("环的外圆周长:"+ring.getOuterPerimeter()); //周长
Ring ring1=new Ring();
System.out.println("内半径:"+ring1.innerRadius);
System.out.println("外半径:"+ring1.outerRadius);
System.out.println("填充颜色:"+ring1.fillColor);
System.out.println("环的面积:"+ring1.getArea());
}
}