实验报告 继承、多态与接口

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

}

f o r (i nt i=0; i

g th; i++)

s=s+ar r[i]+" ";

r e tu rn s;

}

}

p u bl ic c la ss S Y3_3e xt en ds A pp let{

I n tS or t s=ne w Int S or t();

p u bl ic v oi d pa int(Gr ap hi cs g) {

i n t a=30, b=12, c=40;

i n t ar r[]={34,8,12,67,44,98,52,23,16,16};

g.dr aw St ri ng("两个数的排序结果:

"+s.so rt(a,b),30,30);

相关文档
最新文档