5.将语言包解压。解压后的文件夹中包含两个文件夹,features和plugins。将这两个文件夹复制到Eclipse程序目录下,覆盖原程序文件夹即可。
四、使用
- 16 -
实验二 类与对象
一、 实验目的
(1) 掌握面向对象程序设计的方法和Java作为面向对象程序设计语言的特点; (2) 掌握类得封装与对象的使用;
(3) 掌握修饰符和构造方法的使用规则; (4) 掌握构造方法的使用,方法重载用于多态 (5) 掌握类的继承,方法重构与变量的隐藏 (6) 掌握接口的特点、结构、调用和继承; (7) 掌握如何创建包,通过包如何管理类; (8) 掌握Java的继承机制和实现多态的方法。
二、 实验要求
(1)编写一个体现面向对象思想的程序;
(2)编写一个创建对象和使用对象的方法的程序;
(3)编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序; (4)编写体现类的多态性(成员方法重载、构造方法重载)的程序。 (5)编写一个接口,并使用它; (6)编写自定义包的程序
三、 实验内容
(一)Java类的设计与编程
1. 创建一个 Application 应用程序 Demo2_1.java 文件。在文件中定义两个类。一个是CCircle,另一个是主类Demo2_1。
程序功能:描述一个圆类,其主要属性为半径,还有一个非常重要的常量是圆周率。该圆可以求出面积,可以设置半径和取得半径大小。 class CCircle{
static double pi; static double radius; double getRadius(){ return radius; }
static void setCircle(double r, double p){ pi=p;
radius=r; }
double getCircleArea() { return pi*radius*radius; }
- 17 -
}
public class Demo2_1{
public static void main(String args[]){ CCircle cir1=new CCircle();
CCircle.setCircle(2.0,3.1416);
System.out.println(\圆半径=\+cir1.getRadius());
System.out.println(\圆面积=\+cir1.getCircleArea()); CCircle.pi=3.14159; cir1.radius=10.0;
System.out.println(\圆半径=\+cir1.getRadius());
System.out.println(\圆面积=\+cir1.getCircleArea()); } }
【思考】
① 试述程序中两个类的各自作用。
② 类CCircle都封装了什么?求园面积的初始数据是通过那个方法实现的?请修改程序自定义构造方法
初始化数据。
③ 将class CCircle中的变量 double pi; double radius;加上private修饰符,进行编译会出现什么
问题,为什么?
④ 将void setCircle(double r, double p),double getRadius()和double getCircleArea()加上修饰
符static,重新编译会出现什么问题?仍用static,怎样修改别的地方来纠正这个错误?在main中引用这些方法时不用创建对象则怎样引用?
(二)类的继承设计
1.下面是一个具有继承的程序RectangleDemo.java。类Volume继承了父类Rectangle,主类是RectangleDemo。
public class RectangleDemo{
public static void main (String[] args){ double result;
Volume obj1=new Volume (10,20,30); result=obj1.volume ();
System.out.println (\得到的长方体体积 =\+result); result=obj1.area ();
System.out .println (\得到的长方形面积 =\+result); result=obj1.volume (10.0);
System.out.println (\立方体的体积=\+result); } }
class Rectangle{ double length; double width; double area() {
return length*width; }
Rectangle(double w,double l) {
- 18 -
length=l; width=w; } }
class Volume extends Rectangle{ double height;
Volume(double l,double w,double h){ super(l,w); height=h; }
double volume() { double vol;
vol=area()*height; return vol; }
double volume(double y) { return y*y*y; } }
【思考】
① 类RectangleDemo起何作用?Volume类 和Rectangle类之间有何关系?
② 解释类Volume中 Volume(double l, double w, double h) 的作用,super(l,w) 语句的作用; ③ 指出类Volume中方法 double volume()和double volume(double y)体现了面向对象技术的哪个
性质?
④ 如果对类Rectangle中的方法 double area()加上修饰符private,程序能否通过编译,为什么? ⑤ 写出程序运行结果;
2. 文件名为Demo2_3.java,该程序具有继承、成员的覆盖与隐藏概念。请运行该程序然后分析。 class Father{
int x=10,y=20; void speak(){
System.out.println(\+\+x+\+y); }
void calculate(String s) {
System.out.println(s+\+x+\+y+\+x*y); } }
class Son extends Father{ int x=30;
void speak(){
System.out.println(\+\+x+\+y); }
void this_super(){
super.x=100; //修改父类中的x,y值
- 19 -

