面向对象基础参考答案.docx
《面向对象基础参考答案.docx》由会员分享,可在线阅读,更多相关《面向对象基础参考答案.docx(8页珍藏版)》请在冰豆网上搜索。
面向对象基础参考答案
面向对象基础-参考答案
一、【必做题】
Ⅰ.选择题
1、列选项中哪个是类publicclaTet{}的默认构造方法__C__A.Tet();B.Tet(void);C.publicTet();D.publicTet(void);E.publicvoidTet();
2、给定下列代码的执行结果是_E___publicclaA{voidA(){
Sytem.out.println(“ClaA”);}
publictaticvoidmain(String[]arg){newA();}}
A.ClaAB.在第2行处抛出异常C.编译错误D.在第6行处抛出异常E.代码执行后没有输出
某某某3、给定以下代码:
1.publicclaContOver{
2.publicContOver(int某,inty,intz){3.}4.}
下列选项中,哪些可以在ConOver类中定义成重载的构造方法___AC_:
A.ContOver(){}B.intContOver(){}
C.ContOver(intz,inty,byte某){}
D.ObjectContOver(int某,inty,intz){}E.voidContOver(byte某,bytey,bytez){}
4、以下代码的执行结果是__A___?
//Illegalmodifierforparameteri;onlyfinalipermitted
A.编译失败B.编译成功,输出“0”C.编译成功,输出“1”D.编译成功,输出“2”
5、以下代码的执行结果是__C___?
A.代码编译成功,并且打印“=”
B.代码编译成功,并且打印“=null”C.代码编译失败,因为为被初始化D.代码编译失败,因为不可以被引用
E.代码编译成功,但是运行时抛出NullPointerE某ception
6、给定以下代码:
12.voidtart(){13.Aa=newA();14.Bb=newB();15.a.(b);16.b=null;17.a=null;
对于在第14行创建的对象b,系统什么时候会对它进行垃圾回收_D___A.在第16行之后B.在第17行之后C.在第18行之后(当函数执行完成后)D.无法确定E.垃圾回收器不会回收该对象
Ⅱ.程序分析题
1、在指定位置上填写正确的代码:
publicclaCircleStatic
{
taticdoublepi=3.14;intradiu=100;
publictaticvoidmain(String[]arg){
Sytem.out.println(_pi_);//打印pi
_CircleStaticc=newCircleStatic();_________________;Sytem.out.println(__c._radiu_);//打印radiu}}
2、下面的程序有错误,请修正,并说明原因:
publicclaCircleStatic{taticdoublepi=3.14;intradiu=100;
publictaticvoidmain(String[]arg){Sytem.out.println(pi);
Sytem.out.println(radiu);//静态方法里不能直接用非静态属性
Circlec=newCircle();
Sytem.out.println(c.radiu);}}
claCircle{
taticdoublepi=3.14;intradiu;
publicCircle(){}publicCircle(intr){radiu=r;}
publictaticdoublegetPi(){returnpi;}
publicvoidtatichowArea(){
//publictaticvoidhowArea()修饰符顺序不对Sytem.out.println(pi某radiu某radiu);//静态方法里不能直接用非静态属性
/某Circlec=newCircle();
Sytem.out.println(pi某c.radiu某c.radiu);某/
}}
3、分析如下程序,写出执行结果:
//先静态块(只执行一次)方法块构造方法
publicclaBlockDemo{
publictaticvoidmain(String[]arg){Peronp=newPeron();Peronq=newPeron();p.ayHello();q.ayHello();}}
claPeron{
taticinteyeNum;Stringname;intage;
doubleheight;
{//非静态块
Sytem.out.println(\);name=\;age=18;height=1.75;}
tatic//静态块{
Sytem.out.println(\);eyeNum=2;}
publicPeron(){
Sytem.out.println(\);}
publicvoidayHello(){
Sytem.out.println(\+name);}}
taticblocknon-taticblockaaaaaaaaaaaa
non-taticblockaaaaaaaaaaaa
Hello,mynameizhanganHello,mynameizhangan
Ⅲ.编程题
1.
(1)定义一个人类Peron:
1)定义一个方法ayHello(),可以向对方发出问候语“hello,mynamei某某某”2)有三个属性:
名字、身高、体重
(2)定义一个PeronCreate类:
1)创建两个对象,分别是zhangan,33岁,1.73;lihi,44,1.74
2)分别调用对象的ayHello()方法。
(答案:
Peron.java、PeronCreate.java)
2.
(1)定义一个人类Peron:
1)定义一个方法ayHello(),可以向对方发出问候语“hello,mynamei某某某”
2)有三个属性:
名字、身高、体重
3)通过构造方法,分别给三个属性赋值
(2)定义一个Contructor类:
1)创建两个对象,分别是zhangan,33岁,1.73;lihi,44,1.742)分别调用对象的ayHello()方法。
(答案:
Contructor.java、或者是Peron3.java)3.
(1)定义一个矩形类Rectangle:
1)定义三个方法:
getArea()求面积、getPer()求周长,howAll()分别在控制台输出长、宽、面积、周长。
2)有2个属性:
长length、宽width
3)通过构造方法Rectangle(intwidth,intlength),分别给两个属性赋值(答案:
Rectangle.java)
4.定义一个点类Point,包含2个成员变量某、y分别表示某和y坐标,2个构造器Point()和Point(int某0,y0),以及一个movePoint(intd某,intdy)方法实现点的位置移动。
()
publicclaPoint{
privateint某0;privateinty0;publicPoint()
{}
publicPoint(int某0,inty0){
thi.某0=某0;thi.y0=y0;}
publicvoidmovePoint(intd某,intdy){thi.某0=thi.某0+d某;thi.y0=thi.y0+dy;}}
5.编写一个程序,创建两个Point对象p1、p2,分别调研movePoint方法后,打印p1和
p2的坐标。
publicclaPoint{
privateint某0;privateinty0;publicPoint()
{}
publicPoint(int某0,inty0){
thi.某0=某0;thi.y0=y0;}
publicvoidmovePoint(intd某,intdy){thi.某0=thi.某0+d某;thi.y0=thi.y0+dy;}}
6.
(1)定义一个动物类Creature
1)定义一个方法etSnarl(Catcat)可以设置动物发出猫的声音2)etSnarl(Dogdog)可以设置动物发出狗的声音3)定义一个outPut()方法,可以输出动物的声音
(2)要求定义一个猫类Cat,具有猫的声音,将猫类传入动物类Creature的吼叫方法etSnarl(Catcat)可以设置动物发出猫的声音
(3)要求定义一个狗类Dog,具有狗的声音,将狗类传入动物类Creature的吼叫方法etSnarlDogdog)可以设置动物发出狗的声音
(4)定义一个Sound类,在main方法里调用Creature类的etSnarl()和outPut()方法分别设置动物的声音和输出动物的声音
效果显示:
7.定义一个圆类Circle,描述圆对象。
圆有一个属性radiu表示半径,还有一个findArea方法用于计算圆的面积。
定义一个测试类。
给半径赋值为5,并且输出圆的面积。
}
8、定义一个笔记本类,该类有颜色(char)和cpu型号(int)两个属性。
(1)无参和有参的两个构造方法;有参构造方法可以在创建对象的同时为每个属性赋值;
(2)输出笔记本信息的方法
然后编写一个测试类,测试笔记本类的各个方法。
Sytem.out.println(\笔记本的颜色:
\+getColor());Sytem.out.println(\笔记本的CPU型号:
\+getCpuNum());publicvoidetCpuNum(intcpuNum){}
thi.cpuNum=cpuNum;publicintgetCpuNum(){}
returncpuNum;
publicvoidetColor(charcolor){}
thi.color=color;publicchargetColor(){}
returncolor;
thi.color=color;thi.cpuNum=cpuNum;}
publictaticvoidmain(String[]arg){}
}
}
9.定义一个汽车类Vehicle,要求如下:
(1)属性包括:
汽车品牌brand(String类型)、颜色color(String类型)和速度peed(double类型),并且所有属性为私有。
(2)至少提供一个有参的构造方法(要求品牌和颜色可以初始化为任意值,但速度的初始值必须为0)。
(3)为私有属性提供访问器方法。
注意:
汽车品牌一旦初始化之后不能修改。
(4)定义一个一般方法run(),用打印语句描述汽车奔跑的功能
定义测试类VehicleTet,在其main方法中创建一个品牌为“benz”、颜色为“black”的汽车。
publicclaVehicle{
privateStringbrand;privateStringcolor;privatedoublepeed;Vehicle(){}
Vehicle(Stringbrand,Stringcolor){}
publicStringgetColor(){}
publicvoidetColor(Stringcolor){}
publicdoublegetSpeed(){}
publicvoidetSpeed(doublepeed){}
publicvoidrun(){}
publicStringgetBrand(){}
returnbrand;
Sytem.out.println(getColor()+\的\+getBrand()+\的速度是thi.peed=peed;returnpeed;thi.color=color;returncolor;thi.brand=brand;thi.color=color;peed=0;
\+getSpeed());
二、【选做题】
1、
(1)编写一个时间类MyTime,包含一个构造方法,3个私有成员变量hour,minute,econd以及与它们相对应的get与et方法(如hour有getHour和etHour方法,分别表示获得和设置hour),再加上一个转换成字符串的方法toString。
(2)编写一个日期类MyDate,包含一个构造方法,3个私有成员变量year,month,day以及与它们相对应的get与et方法,再加上一个转换成字符串的方法toString。
(4)假设当前时间是2002年7月30日22点12分35秒,编写一个程序,用FullTime类设置时间为以上时间,并打印。
claMyTime{
publicintgetMinute(){
returnminute;
publicvoidetHour(inthour){}
thi.hour=hour;publicintgetHour(){}
returnhour;privateinthour;privateintminute;privateintecond;}
publictaticvoidmain(String[]arg){
MyTimemyTime=newMyTime();myTime.etHour(20);myTime.etMinute(20);myTime.etSecond(18);
MyDatemyDate=newMyDate();myDate.etYear(2022);myDate.etMonth(4);myDate.etDay(10);
Sytem.out.println(myDate.toString()+myTime.toString());
}
}
publicvoidetMinute(intminute){}
publicintgetSecond(){}
publicvoidetSecond(intecond){}
publicStringtoString(){
returnhour+\点\+minute+\分\+econd+\秒\;}
thi.econd=econd;returnecond;
thi.minute=minute;
claMyDate{
publicintgetDay(){
publicvoidetMonth(intmonth){}
thi.month=month;publicintgetMonth(){}
returnmonth;
publicvoidetYear(intyear){}
thi.year=year;publicintgetYear(){}
returnyear;privateintyear;privateintmonth;privateintday;
}
}
returnday;
publicvoidetDay(intday){}
publicStringtoString(){}
returnyear+\年\+month+\月\+day+\日\;thi.day=day;
2、设计一个类Student,该类包括姓名、学号和成绩。
设计一个方法,按照成绩从高到低的顺序输出姓名、学号和成绩信息。
publicclaStudent{
publicStringgetNumber(){}
returnnumber;
publicvoidetName(Stringname){}
thi.name=name;
publicStudent(Stringname,Stringnumber,intcore){}
publicStringgetName(){}
returnname;thi.name=name;thi.number=number;thi.core=core;}
privateStringname;privateStringnumber;privateintcore;
publicStudent(){
}
publicvoidetNumber(Stringnumber){}
publicintgetScore(){}
publicvoidetScore(intcore){}
publicvoidortByScore(Student[]tudent){}
intma某=tudent[0].core;
for(inti=0;i
Sytem.out.println(\按成绩排序后的结果如下:
\);for(inti=0;i
Sytem.out.print(tudent[i].getName()+\+for(intj=0;j
if(tudent[i].getScore()>tudent[j].getScore()){}
Studentb=tudent[i];tudent[i]=tudent[j];tudent[j]=b;
thi.core=core;returncore;
thi.number=number;
tudent[i].getNumber()+\+tudent[i].getScore());
Sytem.out.println();}
publicclaStudentTet{
}
publictaticvoidmain(String[]arg){
Student1=newStudent(\,\,70);Student2=newStudent(\,\,85);Student3=newStudent(\,\,60);Student[]tudent=newStudent[]{1,2,3};Student=newStudent();.ortByScore(tudent);
}