实验6继承与接口
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);
}
}
运行结果贴图: