您的当前位置:首页正文

实验1

来源:一二三四网
实验1 Java语言的面向对象编程

1.1 实验目的

通过编程和上机实验理解Java 语言是如何体现面向对象编程基本思想的,掌握Java 面向对象编程的基础概念和编程方法,了解类的封装方法,以及如何创建类和对象,了解成员变量和成员方法的特性,掌握OOP方式进行程序设计的方法,了解类的继承性和多态性的作用。

1.2 实验要求

编写、调试并运行Java程序,进行类的设计,掌握构造函数及类的继承的设计方法。编写的程序要体现以下4个要求:

1. 编写的程序要体现面向对象思想。

2. 编写的程序要创建类和对象,以及使用对象的方法。

3. 编写的程序要体现类的继承性(成员变量、成员方法、成员变量隐藏)。 4. 编写的程序要体现类的多态性(成员方法重载、构造方法重载)。

1.3 实验设备

PC计算机,安装Jcreater Pro或JBuilder 9或eclipse。

1.4 实验步骤

说明:请同学按顺序依次完成(1)—(4)的编写工作。将根据同学完成情况打分。 (1) 定义一个动物类,其中包括:

 定义属性:名称;年龄;性别作为成员变量。  定义构造方法:对成员变量进行初始化。

 定义多个方法:分别显示相应的属性值,例如getName(){System.out.print(\"

名称=\"+name+\";\"); }方法显示属性“名称”的值。

 定义一个方法“成长”:实现年龄的增加,每执行一次年龄增加1。  定义一个类方法“描述”:实现将“名称;年龄;性别”一起显示。  定义一个main方法。其中,实例化一个对象,分别调用相关方法,显示

各种信息。

 编译生成.class文件并运行。(请找老师检查!)

(2) 定义一个动物行为接口其中包括抽象方法:

 “行动”。例如鱼实现的功能就是游,鸟就是飞。

 “繁殖”。例如有下蛋,生产幼体等。  编译生成.class文件。

(3) 定义一个“青蛙”类继承动物类:

 增加属性:“形态”,定义为字符串类型,表示蝌蚪还是青蛙。

 定义两个构造方法:构造方法重载;其中,要将成员变量“名称”的值设

置为“青蛙类”。

 覆盖父类中的方法“成长”:实现根据年龄显示是蝌蚪还是青蛙,年龄小

于10是蝌蚪,否则是青蛙。其中还要调用父类的“成长”方法,实现年龄的增加。

 定义一个main方法。实例化一个父类对象,调用各种方法显示相关信息,

然后,实例化一个“青蛙”子类对象,分别调用相关方法,包括继承来的各种方法,进行覆盖后的方法等,实现多态效果,显示各种信息。  编译生成.class文件并运行。(请找老师检查!)

(4) 在(3)的基础上,使“青蛙”类实现(2)中定义的动物行为接口。

 实现接口中的两个抽象方法“行动”和“繁殖”。“行动”实现功能为:根

据年龄值如果小于10显示“游”,否则显示“跳”。“繁殖”实现功能为:显示生产幼体。

 定义一个main方法。其中,实例化一个“青蛙”类对象,分别调用相关

方法,实现多态调用,显示各种信息。(请找老师检查!)

1.5 实验报告

(1)各个程序运行结果报告;

(2)各个程序的源代码,要求对代码行进行注释说明;

(3)对有关类的定义、属性和方法的设计,构造函数的定义及其在初始化过程中的

应用,访问级别、封装有关概念等进行总结。

1.6 注意事项及说明

1、 认真填写实验报告

2、 遵守实验室各项制度,服从实验指导教师的安排 3、 按规定的时间完成实验 4、 建议学时数4学时

1.7 相关知识点提示

示例代码:

(1) 类的声明与定义:

[修饰符] class 类名 [extends父类] [implements接口列表] {

//声明成员变量

[修饰符] [static][final][transient] 数据类型 变量名; 例如:int a;

//定义构造方法

public类名([ 参数列表 ] ){}

//定义成员方法

[修饰符] 返回值类型 方法名([ 参数列表 ] ){} 例如:void print(){„„}

//定义main方法

public static void main(String args[]){„„} }

(2) 接口的声明与定义:

[public] interface 接口 [extends 父接口列表]

{

[public] [static] [final] 数据类型 成员变量=常量值; [public] [abstract] 返回值类型 成员方法[(参数列表)]; }

(3) 修饰符:public、protected、缺省和private

(4) 重载(overload)是指类中方法可以同名但参数列表必须不同;(注意:是不

同方法,只是方法名相同,实现的功能可能不同。)

(5) 覆盖(override)是指子类重写了父类中的同名方法。(注意:是在不同类中

定义的不同方法(一个在父类中,一个在子类中),只是方法名和参数列表相同。)

备选实验:

(1)编写一个Java程序,建立一个矩形类(名字自定),包含矩形的两个属性width

和height,以及构造方法设置width和height的初始值,定义方法getArea()计算矩形的面积,定义方法getS()计算矩形的周长。在主类main方法中,输出矩形的长、宽和面积、周长。

(2)仿照上面程序,设计一个有关圆的类,类中包含一个属性,用于表示圆的半径,

一个设置半径的方法,一个计算圆周长和面积的方法。程序输出圆的半径、周长和面积数据。

(3)类继承的设计,设计一个描述矩形的类,再设计一个描述正方形的类,要求正

方形类继承自矩形类。

(4)仿照上面关于类继承的程序,设计一个描述点的类,包含点的坐标属性和显示

点坐标的方法,再设计一个描述圆的类,要求圆类继承自点类,其中点坐标表示

圆心位置,并增加一个圆半径属性和一个显示圆周长和面积的方法。程序输出圆心坐标,圆的周长和面积。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top