计科1101JavaExp5汇总.docx
《计科1101JavaExp5汇总.docx》由会员分享,可在线阅读,更多相关《计科1101JavaExp5汇总.docx(23页珍藏版)》请在冰豆网上搜索。
计科1101JavaExp5汇总
《Java语言程序设计》实验报告
实验序号:
05
实验项目名称:
继承和多态
学 号
姓 名
专业、班
实验地点
文波
指导教师
韩志龙
时间
2013/6/3
一、实验目的及要求
目的:
理解继承与多态的概念,熟练掌握使用方法
二、实验设备(环境)
1.windows操作系统
2.MyEclipse软件
三、实验内容与步骤
1、设计一个数据类型判断类Polymorphism,使用重载、装箱等技术判断一个不带等号的Java表达式的结果的数据类型。
2、设计一个链表结点类LinkNode,此类可以存放int、long、float、double、byte、short、String、StringBuffer类型的数据。
用此类:
a、随机产生100个整数(范围自定)的链表,在生成的过程中从小到大排列,然后输出;b、随机产生100个6个英文字母的单词的链表,在生成的过程中从小到大排列,然后输出。
(关注装箱和拆箱相关概念)
3、A、在main()中使用LinkNode类创建4个实例,并赋予不同的值(long、double、StringBuffer、MyDate),然后使用Object中默认的toString()方法(从超级父类继承而来)显示结果。
B、继承LinkNode类创建新类LinkNodeS,在其中重写Object中默认的toString()方法(将结点的value转换成对应的字符串),main()中用LinkNodeS类同样创建4个实例,并赋予和上面同样的值(long、double、StringBuffer、MyDate),观察使用新的toString()方法的效果,体会继承与多态。
(MyDate的日期toString用标准格式)
4、有来自4类(鸟类、昆虫类、爬行类和鱼类)的100个动物聚在一起开会,商议和另一个动物部落打仗事宜,会议要求每个动物都要报告自己所属的动物类别和自己的天赋,以便选拔人才、组织兵力迎战。
设计:
用Animal作为基类,鸟类、昆虫类、爬行类和鱼类各作为Animal的子类设计类层次结构,设计时运用继承、重写并设计多态机制,同时对每个子类至少要添加一个其描述的动物特有的行为和一个特有的属性,以更准确地描述子类对象。
使用:
用循环随机生成这100个动物装入动物数组,要对每个动物进行编号和随机命名,用循环让每个参会的动物报告自己的类别和天赋。
Animal内容如下:
ClassAnimal
{
publicintid;//编号
publicStringname;//名字
//publicStringtype;//类别:
鸟类、昆虫类、爬行类和鱼类之一
publicvoidshowType()//在console上秀自己的类别
{
System.out.println(“MyIDis“+id+”andIamjustananimal,mytypeisgoingtobedeterminedlater.”);
}
publicvoidshowTalent()//在console上秀自己的天赋特长
{
System.out.println(“Idon’tknowwhatIamtalentedat.”);
}
}
(请认真观察和体会Java的继承和多态)
四、实验结果与数据处理
第一题:
publicclasswmt
{
publicstaticvoidmain(String[]args)
{
System.out.println(Polymorphism.getType(5678901234l*987654321));
System.out.println(Polymorphism.getType(34+6+8));
System.out.println(Polymorphism.getType('u'));
System.out.println(Polymorphism.getType(6/5.0));
System.out.println(Polymorphism.getType(456.123f*789));
}
}
classPolymorphism
{
privatefinalstaticStringINT_TYPE="int";
privatefinalstaticStringLONG_TYPE="long";
privatefinalstaticStringDOUBLE_TYPE="double";
privatefinalstaticStringFLOAT_TYPE="float";
privatefinalstaticStringCHAR_TYPE="char";
privatefinalstaticStringBYTE_TYPE="byte";
privatefinalstaticStringSHORT_TYPE="short";
privatefinalstaticStringBOOLAEN_TYPE="boolean";
publicstaticStringgetType(inti){
returnINT_TYPE;
}
publicstaticStringgetType(longl){
returnLONG_TYPE;
}
publicstaticStringgetType(doubled){
returnDOUBLE_TYPE;
}
publicstaticStringgetType(floatf){
returnFLOAT_TYPE;
}
publicstaticStringgetType(charc){
returnCHAR_TYPE;
}
publicstaticStringgetType(byteby){
returnBYTE_TYPE;
}
publicstaticStringgetType(shorts){
returnSHORT_TYPE;
}
publicstaticStringgetType(booleanbo){
returnBOOLAEN_TYPE;
}
publicstaticStringgetType(Objectobj){
returnobj!
=null?
obj.toString().split("@")[0]:
null;
}
}
第二、三题:
publicclasswmt{
publicstaticvoidmain(String[]args)
{
int100();
englishString100();
LinkNodeaLong=newLinkNode(123456789l);
LinkNodeaDouble=newLinkNode(123.456);
LinkNodeaStringBuffer=newLinkNode("abcde");
LinkNodeaDate=newLinkNode("2013-6-321:
16:
28");
System.out.println(aLong.toString());
System.out.println(aDouble.toString());
System.out.println(aStringBuffer.toString());
System.out.println(aDate.toString());
LinkNodeSanotherLong=newLinkNodeS(123456789l);
LinkNodeSanotherDouble=newLinkNodeS(123.456);
LinkNodeSanotherStringBuffer=newLinkNodeS("abcde");
LinkNodeSanotherDate=newLinkNodeS("2013-6-321:
16:
28");
System.out.println(anotherLong.toString());
System.out.println(anotherDouble.toString());
System.out.println(anotherStringBuffer.toString());
System.out.println(anotherDate.toString());
}
staticvoidint100()
{
LinkNodetheFirst=newLinkNode(-1);
LinkNodeaPointer=theFirst;
LinkNodetheEnd=newLinkNode(1000);
aPointer.nextNode=theEnd;
for(inti=0;i<100;i++)
{
aPointer=theFirst;
LinkNodeaNode=newLinkNode((int)(Math.random()*1000));
while((Integer)aNode.value>(Integer)aPointer.nextNode.value)
{
aPointer=aPointer.nextNode;
}
aNode.nextNode=aPointer.nextNode;
aPointer.nextNode=aNode;
}
aPointer=theFirst;
for(inti=0;i<100;i++)
{
aPointer=aPointer.nextNode;
aPointer.display();
}
}
staticvoidenglishString100()
{
LinkNodetheFirst=newLinkNode("aaaaaa");
LinkNodeaPointer=theFirst;
LinkNodetheEnd=newLinkNode("zzzzzz");
aPointer.nextNode=theEnd;
intintCharCode;
for(inti=0;i<100;i++)
{
StringBufferaString=newStringBuffer();
aPointer=theFirst;
aString.setLength(0);
for(intj=0;j<6;j++)
{
intCharCode=0;
while(!
(intCharCode>=65&&intCharCode<=90||intCharCode>=97&&intCharCode<=122))
intCharCode=65+(int)(Math.random()*58);
aString.append((char)intCharCode);
}
LinkNodeaNode=newLinkNode(aString);
while(((String)aNode.value.toString()).compareTo((String)aPointer.nextNode.value.toString())>0)
{
aPointer=aPointer.nextNode;
}
aNode.nextNode=aPointer.nextNode;
aPointer.nextNode=aNode;
}
aPointer=theFirst;
for(inti=0;i<100;i++)
{
aPointer=aPointer.nextNode;
aPointer.display();
}
}
}
classLinkNode
{
publicObjectvalue;
publicLinkNodenextNode;
publicLinkNode(Objectobj)
{
value=obj;
}
publicvoiddisplay()
{
System.out.println(this.value);
}
}
classLinkNodeSextendsLinkNode
{
publicLinkNodeS(Objectobj)
{
super(obj);
}
publicStringtoString()
{
StringaString;
aString=""+value;
returnaString;
}
}
第四题:
publicclassAnimals{
publicstaticvoidmain(String[]args)
{
StringBuffer[]names;
names=newStringBuffer[100];
intintCharCode;
StringBufferaName=newStringBuffer();
for(inti=0;i<100;i++)
{
aName.setLength(0);
for(intj=0;j<6;j++)
{
intCharCode=0;
while(!
(intCharCode>=65&&intCharCode<=90||intCharCode>=97&&intCharCode<=122))
intCharCode=65+(int)(Math.random()*58);
aName.append((char)intCharCode);
}
names[i]=newStringBuffer(aName);
}
Animal[]animals=newAnimal[100];
intaNum,flag;
for(inti=0;i<100;i++)
{
aNum=30+(int)(Math.random()*70);
flag=(int)(Math.random()*4);
if(flag==0)
animals[i]=newBird(i+1,names[i],"bird","flying",aNum);
elseif(flag==1)
animals[i]=newInsect(i+1,names[i],"insect","jumping",aNum);
elseif(flag==2)
animals[i]=newReptilia(i+1,names[i],"reptilia","creeping",aNum);
else
animals[i]=newFish(i+1,names[i],"fish","swimming",aNum);
}
for(inti=0;i<100;i++)
{
animals[i].showType();
animals[i].showTalent();
if(animals[i]instanceofBird)
{
BirdaBird=(Bird)animals[i];
aBird.showMyFly();
}
elseif(animals[i]instanceofInsect)
{
InsectanInsect=(Insect)animals[i];
anInsect.showMyJump();
}
elseif(animals[i]instanceofReptilia)
{
ReptiliaaReptilia=(Reptilia)animals[i];
aReptilia.showMyCreep();
}
else
{
FishaFish=(Fish)animals[i];
aFish.showMySwim();
}
}
}
}
classAnimal
{
publicintid;//编号
publicStringBuffername;//名字
publicStringtype;//类别:
鸟类、昆虫类、爬行类和鱼类之一
publicStringtalent;
publicvoidshowType()//在console上秀自己的类别
{
System.out.print("MyIDis"+id+"andmynameis"+name+"."+"Iamjusta"+type+".");
}
publicvoidshowTalent()//在console上秀自己的天赋特长
{
System.out.print("Iamtalentedat"+talent+".");
}
}
classBirdextendsAnimal
{
publicintflySpeed;
publicBird(intid,StringBuffername,Stringtype,Stringtalent,intflySpeed)
{
this.id=id;
this.name=name;
this.type=type;
this.talent=talent;
this.flySpeed=flySpeed;
}
publicvoidshowMyFly()
{
System.out.println("AndIcanfly"+flySpeed+"kilometresperhour.");
}
}
classInsectextendsAnimal
{
publicintjumpHeight;
publicInsect(intid,StringBuffername,Stringtype,Stringtalent,intjumpHeight)
{
this.id=id;
this.name=name;
this.type=type;
this.talent=talent;
this.jumpHeight=jumpHeight;
}
publicvoidshowMyJump()
{
System.out.println("AndIcanjump"+jumpHeight+"cmhigh.");
}
}
classReptiliaextendsAnimal
{
publicintcreepSpeed;
publicReptilia(intid,StringBuffername,Stringtype,Stringtalent,intcreepSpeed)
{
this.id=id;
this.name=name;
this.type=type;
this.talent=talent;
this.creepSpeed=creepSpeed;
}
publicvoidshowMyCreep()
{
System.out.println("AndIcancreep"+creepSpeed+"kilometresperhour.");
}
}
classFishextendsAnimal
{
publicintswimSpeed;
publicFish(intid,StringBuffername,Stringtype,Stringtalent,intswimSpeed)
{
this.id=id;
this.name=name;
this.type=type;
this.talent=talent;
this.swimSpeed=swimSpeed;
}
publicvoidshowMySwim()
{
System.out.println("AndIcanswim"+swimSpeed+"kilometresperhour.");
}
}
第一题的运行结果:
long
int
char
double
float
第二,三题的运行结果:
13147983959698100104106108112122127134154158187204211216278306336344344357378383384386388388391392412423426433443447448455462476478486488489492495498504509510531564572603603617623627631635643663691705707713722727733742743765787788803804807820820841844848861873884892921939940956964975976981999AboRZxBOUbzDCNmcRPCyMBvZDLEEnZEvYVhtGZmNMRGkgeixGywnwyHCAOeZHqhBZVHvYloUJrhiVWKPuJZOKhxymcMtTpUANeNwKYNkzzeWNxJrgXNysQcYPFCIwCPJrTFMPdMuwAQOsODBQTbWYGQzalAsQzjtPiRpguMHSbJaaWSeGRLjShCOsbTIUJUWTWvtTkTaHoZvUUpqIPUmjNoDVZgrpeVgarLjVsYGBw