实验三 类与对象(一)
一、 实验目的
1、 掌握类与对象的基本概念;
2、 掌握类的声明、创建与使用方法;
3、 掌握类的构造方法的定义与使用方法
4、 掌握类的成员变量、成员方法的定义与使用方法;
5、 理解类变量、类方法与实例变量、实例方法的区别;
6、 理解Java中方法重载的实现方式。
二、 实验要求
1、 根据实验步骤中提出的要求,使用记事本编写相应的Java程序;
2、 使用JDK中提供的javac以及java命令编译、运行自己所编写的Java程序;
3、 根据编译与运行过程中所获得的错误信息修改程序直至获得正确的结果;
4、 记录实验中遇到的各类问题并以及解决办法。
三、 实验步骤
1、 类的声明、创建与使用
(1) 采用记事本编写下面所给的Java程序并保存为Circle.java;
final static double PI;
class Circle{
PI=3.14;
double r;
double circumference(){
return 2*PI*r;
}
double area(){
return PI*r*r;
}}
(2) 修改其中的错误,使其可以正确编译;
(3) 采用记事本编写下面所给的Java程序并保存为CircleTest.java;
class CircleTest{
public static void main(String args[]){
Circle c=new Circle();
System.out.printf("Area of the Circle is : %8.4f",c.area());
}
}
(4) 运行CircleTest查看结果。
(5) Java中变量都必须先赋值后使用,否则会出现编译错误(该变量未初始化),那么成员变量是否必须设定初值?
2、 构造方法
(1) Circle类没有声明构造方法,那么语句Circle c=new Circle();中调用的构造方法Circle()会不会出错?为什么?
(2) 在Circle类中添加以下构造方法:
Circle(double radius){
r= radius;
}
(3) 重新编译Circle.java之后(暂时不要重新编译CircleTest.Java),运行CircleTest将会出现什么错误?为什么?如何修改?
3、 类变量与类方法
(1) 在CircleTest类的main方法中添加以下代码:
Circle c1=null;
System.out.printf("PI is : %8.4f",c1.PI); //或Circle.PI
(2) 修改后编译运行是否会出错?为什么?
(3) 在Circle类中添加以下代码:
static void setPI(double pi){
PI=pi;
this.r=3;
}
(4) 重新编译Circle类会出现什么错误?为什么?如何修改?
(5) 修改CircleTest类的main方法为:
Circle c1=null;
System.out.printf("PI is : %8.4f\n",c1.PI);
Circle c=new Circle(3);
System.out.printf("Area of the Circle is : %8.4f\n",c.area());
c1.setPI(3.1415926);
System.out.printf("PI is : %8.4f\n",c1.PI);
System.out.printf("Area of the Circle is : %8.4f\n",c.area());
(6) 上述代码将输出什么结果?通过阐述其执行过程说明出现该输出结果的原因。
4、 方法重载
(1) 采用记事本编写下面所给的Java程序并保存为Circle.java;
class SomeThing{
int x;
int y;
void move(int x,int y){
this.x=x;
this.y=y;
}
}
(2) 在SomeThingl类中尝试分别添加以下代码,以验证哪些形式的重载有效,并说明其原因
boolean move(int x,int y){
boolean flag=(this.x==x)&&(this.y==y);
this.x=x;
this.y=y;
return flag;
}
void move(int width,int height){
x+=width;
y+=height;
}
void move(int distance,boolean direction){
if (direction)
x+=distance;
else
y+=distance;
}
四、 实验结果
五、 实验小结