实验6继承与接口

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

实验报告

姓名学号专业班级

课程名称 Java实验实验日期成绩指导教师批改日期实验名称实验 6 继承与接口

[实验目的]

1、掌握java 继承中父类及其子类的定义方法。

2、掌握子类重写父类同名方法的方法。

3、掌握接口的用法。

(1) 学习如何定义接口 ;

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

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

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

[实验要求]

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

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

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

[实验内容]

1、类的继承性练习

(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);

}

}

class TestStudent{//测试类

public static void main(String[] args) {

Student s = new Student();

s.setdata("小红", 2010242555);

s.print();

}

}

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

图一

(二)创建将被继承的类

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

程序代码:

public class CollegeStudent extends Student{

protected String xy;

protected int bj;

void setdata(String xm,int xh,String xy,int bj){

super.setdata(xm, xh);

this.xy = xy;

this.bj = bj;

}

public void print() {

super.print();

System.out.print("学院:"+xy+"班级:"+bj);

}

}

class TestCollegeStudent{

public static void main(String[] args) {

CollegeStudent cs = new CollegeStudent();

cs.setdata("小蓝", 2010242555, "计算机学院", 1);

cs.print();

}

}

运行结果贴图:

图二

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

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

对象。

程序代码:

public class OverWriteToString {

private String str;

public OverWriteToString(){

}

public OverWriteToString(String str){

this.str = str;

}

public String ToString(){

return super.toString()+"\n"+str;

}

public static void main(String[] args) {

OverWriteToString o = new OverWriteToString("This is a method "

+"to overwrite ToString method!");

System.out.println(o.ToString());

}

}

运行结果贴图:

图三

(2)试着以Point类为例,尝试为Object类的clone()和equals()方法进行覆盖,Point类包含

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

程序代码:

public class Point {

private int x;

private int y;

public Point(){

}

public Point(int a,int b){

x = a;

y = b;

}

public Point(Point p){

x = p.x;

y = p.y;

}

//重写equals()方法

public boolean equals(Object o){

if(o instanceof Point){

return (x==((Point)o).x && y==((Point)o).y);

}

else

return false;

}

//重写toString()方法

public String toString(){

return super.toString()+"\n该点的坐标为("+x+","+y+")";

}

//重写clone()方法

public Object clone() throws CloneNotSupportedException {

return new Point(this);

}

}

class TestPoint{

public static void main(String[] args) throws CloneNotSupportedException { Point p = new Point(2,3);

Point p1= new Point(p);

Point p2 = (Point)p.clone();

System.out.println("p与p1相等吗?"+p.equals(p1));

System.out.println("p与p2相等吗?"+p.equals(p2));

System.out.println(p);

System.out.println(p1);

System.out.println(p2);

}

}

运行结果贴图:

相关文档
最新文档