实验报告 继承、多态与接口
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三继承、多态与接口
一、实验目的
1.掌握Ja v a的继承机制;
2.掌握对象引用的多态方法;
3.掌握接口的特点、结构和调用;
4.掌握接口和继承的混合使用。
二、实验要求
1.编写体现类的继承性(成员变量、成员方法、成员变量隐藏)
的程序。
2.编写体现类的多态性(成员方法重载、构造方法重载)的程
序。
3.编程使用系统接口的技术和创建自定义接口的方法。
三、实验内容
(一)类的继承性练习
1.理解继承的含义
新类可从现有的类中产生,并保留现有类的成员变量和方法并可根据需要对它们加以修改。新类还可添加新的变量和方法。这种现象就称为类的继承。
当建立一个新类时,不必写出全部成员变量和成员方法。只要简单地声明这个类是从一个已定义的类继承下来的,就可以引用被继承类的全部成员。被继承的类称为父类或超类
(su pe rc la ss),这个新类称为子类。
J a va 提供了一个庞大的类库让开发人员继承和使用。设计这些类是出于公用的目的,因此,很少有某个类恰恰满足你的需要。你必须设计自己的能处理实际问题的类,如果你设计的这个类仅仅实现了继承,则和父类毫无两样。所以,通常要对子类进行扩展,即添加新的属性和方法。这使得子类要比父类大,但更具特殊性,代表着一组更具体的对象。继承的意义就在于此。
2.创建公共类S Y3_1_P
编写程序文件S Y3_1_P.ja va,源代码如下:pu bl ic c la ss SY3_1_P{
pr ote c te d St ri ng x m;
//具有保护修饰符的成员变量
pr ote c te d in t xh;
vo id s et da ta(S tr in g m,in t h) { //设置数据的方法
xm =m;
xh = h;
}
pu bl i c vo id p ri nt(){//输出数据的方法
Sy st em.o ut.pr i nt ln(x m+", "+xh);
}
}
●编译S Y3_1_P.j av a,产生类文件SY3_1_P.cl as s。3.创建继承的类
●程序功能:通过SY3_1_P类产生子类SY3_2,其不仅
具有父类的成员变量x m(姓名)、xh(学号),还定义
了新成员变量xy(学院)、x i(系)。在程序中调用了
父类的pr in t 方法,同时可以看出子类也具有该方法。
●编写S Y3_2.j av a 程序,源代码如下:
c l as s SY3_2ex ten
d s SY3_1_P{
pr ot ect e d St ri ng x y;
pr ot ect e d St ri ng x i;
pu bl ic s ta ti c vo id m ain(St ri ng a rg s[]) {
SY3_1_P p1 = ne w S Y3_1_P();
p1.se td at a("帅零",12321) ;
p1.pr in t();
SY3_2s1 = ne w SY3_2() ;
s1.se td at a("郭丽娜",12345); //调用父类的
成员方法
s1.xy="经济管理学院"; //访问本类的成员变量
s1.xi="信息管理系"; //访问本类的成
员变量
s1.pr in t();
S y st em.o ut.p ri nt(s1.xm+", "+s1.xy+",
"+s1.x i);
}
}
●编译并运行程序
注意:公共类S Y3_1_P与SY3_2类要在同一文件夹(路径)内。
(二)类的多态性练习
1.理解类的多态性
类的继承发生在多个类之间,而类的多态只发生在同一个类上。在一个类中,可以定义多个同名的方法,只要确定它们的参数个数和类型不同。这种现象称为类的多态。
多态使程序简洁,为程序员带来很大便利。在OO P 中,当程序要实现多个相近的功能时,就给相应的方法起一个共同的名字,用不同的参数代表不同的功能。这样,在使用方法时不论传递什么参数,只要能被程序识别就可以得到确定的结果。
类的多态性体现在方法的重载(ov erl o ad)上,包括成员方法和构造方法的重载。
2.方法的重载
方法的重载是指对同名方法的不同使用方式。
●程序功能:对不同的数进行排序输出。在I nt So rt类中
定义3个同名的方法so rt,
●编写SY3_3.j a va 文件,源代码如下:
i m po rt j av a.aw t.G r ap hi cs;
i m po rt j av a.ap ple t.A pp le t;
c l as s In tS or t {
p u bl ic S tr in g sor t(i nt a, in t b) {
i f (a>b)
r e tu rn a+" "+b;
e l se
r e tu rn b+" "+a;
}
p u bl ic S tr in g sor t(i nt a, i n t b, i nt c) {
i n t sw ap;
i f (a
s w ap=a;
a=b;
b=sw ap;
}
i f (a s w ap=a; a=c; c=sw ap; } i f (b s w ap=b; b=c; c=sw ap; } r e tu rn a+" "+b+" "+c; } p u bl ic S tr in g sor t(i nt a rr[]) { S t ri ng s=" "; i n t sw ap; f o r (i nt i=0; i g th; i++) f o r (i nt j=0; j g th-1; j++) i f (ar r[j]>a rr[j+1]) { s w ap=a rr[j]; a r r[j]=a rr[j+1]; a r r[j+1]=s wa p; }