JAVA实验6继承与接口

山西大学计算机与信息技术学院

实验报告

姓 名学 号专业班级课程名称实验日期成 绩指导教师批改日期实验名称(1) 学习如何定义接口 ;

(2) 掌握接口的实现方式 ;

(3) 使用实现了接口的类 ;

(4) 理解接口与抽象类的区别。

[实验要求]

复习理论教学中所学的内容。

认真进行实验预习,查阅参考书,书写源程序,书写实验预习报告。

认真总结实验并书写实验报告。

[实验内容]

类的继承性练习

(1) 程序源代码如下。

public class Student
{
protected String xm; //姓名,具有保护修饰符的成员变量
protected int xh;//学号
void setdata(String xm,int xh) //设置数据的方法
{
this.xm=xm;
this.xh=xh;
}
public void print() //输出数据的方法
{
System.out.println(xm+", "+xh);
}
}

(2) 编译源并运行程序。贴图如下

(二)创建将被继承的类

(1) 程序功能:通过Student类产生子类CollegeStudent,其不仅具有父类的成员变量xm(姓名)、xh(学号),还定义了新成员变量xy(学院)、bj(bj)。在程序中调用了父类的print 方法,同时可以看出子类也具有该方法。

程序代码:

运行结果贴图:

(三)了解成员方法的覆盖方式

编写覆盖了Object 类toString方法的一个类,并用System.out.println()输出该类的一个对象。

程序代码:

运行结果贴图:

试着以Point类为例,尝试为Object类的clone()和equals()方法进行覆盖,Point类包含私有成员x,y,构造方法1(包含两个参数a,b),构造方法2(参数为Point p),clone方法,equals方法,toString方法。用TestPoint类进行测试。

程序代码:

运行结果贴图:

(四)this、super和super()的使用

程序功能:程序功能:说明this、super 和super()的用法。程序首先定义Point(点)类,然后创建点的子类Line(线)。最后通过TestLine类输出线段的长度。程序中通过super(a,b)调用父类Point 的构造方法为父类的x 和y 赋值。在子类Line 的setLine方法中,因为参数名和成员变量名相同,为给成员变量赋值,使用this 引用,告诉编译器是为当前类的成员变量赋值。在length 和toString 方法中使用父类成员变量时,使用super 引用,告诉编译器使用的是父类的成员变量。

程序代码:

运行结果贴图:

(五) 接口的实现与运用

实验任务 :

本实验的任务是设计和实现一个 Soundable 接口 , 该接口具有发声功能 , 同时还能够调节声音大小。 Soundable 接口的这些功能将会由 3 种声音设备来具体实现 , 它们分别是收音机 Radio 、随身昕 Walkman 和手机 Mobilephone 。最后还要设计一个应用程序类来使用这些实现了 Soundable 接口的声音设备类。程序运行时 , 先询问用户想听哪种设备 , 然后程序就会按照该设备的工作方式来发出声音。

实验步骤 :

(1) 仔细阅读程序, 并完成其中的代码1~代码3。

// InterfaceTest.java
import java.util.Scanner;
interface Soundable {
public void increaseVolume( );
public void decreaseVolume( );
public void stopSound( );
public void playSound( );
}
class Radio implements Soundable {
public void increaseVolume( ) {
System.out.println("增大收音机音量");
}
public void decreaseVolume( ) {
System.out.println("减小收音机音量");
}
public void stopSound( ) {
System.out.println("关闭收音机");
}