实验三 类与对象(一)
一、 实验目的
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 ",c1.PI);
Circle c=new Circle(3);
System.out.printf("Area of the Circle is : %8.4f ",c.area());
c1.setPI(3.1415926);
System.out.printf("PI is : %8.4f ",c1.PI);
System.out.printf("Area of the Circle is : %8.4f ",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;
}
四、 实验结果
五、 实验小结