实验207 类与对象精品文档.docx
- 文档编号:3251459
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:15
- 大小:777.68KB
实验207 类与对象精品文档.docx
《实验207 类与对象精品文档.docx》由会员分享,可在线阅读,更多相关《实验207 类与对象精品文档.docx(15页珍藏版)》请在冰豆网上搜索。
实验207类与对象精品文档
班级:
软件1班姓名:
郑玉梅学号:
1308190102成绩
面向对象编程基础
(一)简单的类和对象
实验目的:
1.掌握类的定义,熟悉属性、构造函数、方法的作用,掌握用类作为类型声明变量和方法返回值;
2.理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性;
实验数据记录及分析(或程序及运行结果)
1.写一个名为Rectangle的类表示同一种颜色的矩形类。
其成员属性包括宽width、高height,类属性包括颜色color(默认颜色是蓝色),width和height都是double型的,而color则是String类型的。
要求该类具有:
(1)合理的构造函数,完成各属性的初始赋值
(2)使用get和set的形式完成各个属性的访问及修改
(3)计算面积的getArea()方法
(4)合理的toString方法。
主函数如下:
publicstaticvoidmain(String[]args){
Rectangler;
System.out.println("创建一个默认初值的矩形:
");
r=newRectangle();
System.out.println("\t"+r);
System.out.println("修改具有默认初值矩形的宽为10,高为20:
");
r.setWidth(10);
r.setHeight(20);
System.out.println("\t"+r);
System.out.println("修改所有矩形对象的颜色为红色");
Rectangle.setColor("红色");
System.out.println("\t"+r);
System.out.println("创建一个宽10,高30的矩形");
r=newRectangle(10,30);
System.out.println("\t"+r);
System.out.println("创建一个边长为1的正方形:
");
r=newRectangle
(1);
System.out.println("\t"+r);
}
2.一副牌Deck有52张扑克Card组成(不含王牌),每张牌有自己的牌型suit(用char类型)和点数rank(用String类型),补充完整下面的类的定义。
publicclassCard{
charsuit;
Stringrank;
publicCard(charsuit,Stringrank){
this.suit=suit;
this.rank=rank;
}
publicStringtoString(){
returnsuit+rank;//红10黑3
}
publicstaticvoidmain(String[]args){
Cardc=newCard('黑',"10");
System.out.println(c.toString());
}
}
3.程序运行后的输出是什么?
classTestReference{
publicstaticvoidmain(String[]args){
intx=2;
TestReferencetr=newTestReference();
System.out.print(x);
tr.change(x);
System.out.print(x);
}
publicvoidchange(intnum){
num=num+1;
}
}
22num是局部变量,运行后,被回收了。
4.写出程序运行结果
publicclassFoo{
publicstaticvoidmain(String[]args){
StringBuffera=newStringBuffer(“A”);
StringBufferb=newStringBuffer(“B”);
operate(a,b);//调用了Foo类的一个类方法
System.out.println(a+“,”+b);
}
staticvoidoperate(StringBufferx,StringBuffery){
x.append(y);
y=x;
}
}
结果:
AB,B,输出AB是因为调用的是StringBuffer类的一个方法,而b的值不变是因为调用的是FOO类的方法,y为局部的变量,运行后被回收。
5.解释下面的程序运行结果输出为什么是null
publicclassMy{
Strings;
publicvoidMy(){
s="Constructor";
}
publicvoidgo(){
System.out.println(s);
}
publicstaticvoidmain(Stringargs[]){
Mym=newMy();
m.go();
}
}
没有调用构造函数,则默认的是null;
6.给出下面的类,找出后面的5个声明中,哪些是重载后的构造函数
publicclassConstOver{
publicConstOver(intx,inty,intz){
}
}
A.ConstOver(){}
B.ProtectedintConstOver(){}
C.PrivateConstOver(intz,inty,bytex){}
D.PublicObjectConstOver(intx,inty,intz){}
E.PublicvoidConstOver(bytex,bytey,bytez){}
AC
7.给出下面的类,找出后面的5个声明中,哪些是重载后的setVar函数
publicclassMethodOver{
publicvoidsetVar(inta,intb,floatc){
}
}
A.PrivatevoidsetVar(inta,floatc,intb){}
B.ProtectedvoidsetVar(inta,intb,floatc){}
C.PublicintsetVar(inta,floatc,intb){returna;}
D.PublicintsetVar(inta,intb,floatd){returna;}
E.ProtectedfloatsetVar(inta,intb,floatc){returnc;}
8.下列程序有错误,调试、写出错误原因并改正。
publicclassVariableScope{b
publicstaticvoidmain(Stringargs[]){
inti=10;
{
intk=10;
System.out.println("i="+i);
System.out.println("k="+k);
}
System.out.println("i="+i);
System.out.println("k="+k);
}
}
K是局部变量只能在方法中定义,把k定义为全局变量;把Inti=0中的括号去掉
9.输入下面的类,结合题2中的Card类,完成下面的要求
publicclassJLab1201{
staticfinalcharsuits[]={'H','S','D','C'};
staticfinalStringranks[]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
staticCard[]cards=newCard[52];
publicstaticvoidinit(){
for(inti=0;i for(intj=0;j cards[i*ranks.length+j]=newCard(suits[i],ranks[j]); } } } publicstaticvoidswap1(Cardc1,Cardc2){ Cardc=c1; c1=c2; c2=c; } publicstaticvoidswap1(inti,intj){ Cardc=cards[i]; cards[i]=cards[j]; cards[j]=c; } publicstaticvoidswap2(Cardc1,Cardc2){ chars=c1.suit; c1.suit=c2.suit; c2.suit=s; Stringr=c1.rank; c1.rank=c2.rank; c2.rank=r; } publicstaticvoidmain(finalString[]args){ init(); //任取两张牌 Cardc1=cards[10]; Cardc2=cards[12]; System.out.println("第11张牌是: "+c1+"\t第13张牌是: "+c2); //添加代码之处: } } 1)在main方法中,添加下面几行语句,写出并分析结果 swap1(c1,c2); System.out.println("执行swap1(c1,c2)后"); System.out.println("c1引用的牌是: "+c1+"\tc2引用的牌是: "+c2); System.out.println("第11张牌是: "+cards[10]+"\t第13张牌是: "+cards[12]); 第11张牌是: HJ第13张牌是: HK 执行swap1(c1,c2)后 c1引用的牌是: HJc2引用的牌是: HK 第11张牌是: HJ第13张牌是: HK 解析: 调用swap1函数后,传入的是对象,方法中新建对象c是局部变量,只在方法中起作用,方法执行结束后,系统自动回收对象,故牌并没有交换 2)在main方法中,去掉刚才添加的语句,添加下面几行语句,写出并分析结果 swap1(10,12); System.out.println("执行swap1(10,12)后"); System.out.println("c1引用的牌是: "+c1+"\tc2引用的牌是: "+c2); System.out.println("第11张牌是: "+cards[10]+"\t第13张牌是: "+cards[12]); 第11张牌是: HJ第13张牌是: HK 执行swap1(10,12)后 c1引用的牌是: HJc2引用的牌是: HK 第11张牌是: HK第13张牌是: HJ 解析: 传入方法中的参数是下标,在方法中通过下标将两张牌对换了,结束后,下标被回收,但是两张牌已经对换了
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验207 类与对象精品文档 实验 207 对象 精品 文档
![提示](https://static.bdocx.com/images/bang_tan.gif)