还剩14页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
练习6面向对象的高级特性Ⅰ.选择题
1、给定下列代码知识点类的继承
1.classSuper{
2.publicfloatgetNum(){return
3.0f;}
3.}
4.
5.publicclassSubextendsSuper{
6.
7.}当在第6行加入什么方法时会引起编译错误?B
2、给定以下代码(知识点接口多态)执行后的结果是?BA.打印字符串“Tested”B.编译失败C.代码运行成功但无输出D.运行时抛出异常
3、MAX_LENGTH是int型public成员变量变量值保持为常量100,用简短语句定义这个变量?CD(知识点final关键字使用)A.publicintMAX_LENGTH=100;B.finalintMAX_LENGTH=100;C.finalpublicintMAX_LENGTH=100;D.publicfinalintMAX_LENGTH=
100.
4、给出以下代码,请问该程序的运行结果是什么?(B)(知识点方法的覆盖)1.classA{staticvoidfoointi{};}
2.classBextendsA{voidfoointi{};}A第1行编译错误B第2行编译错误C代码编译成功
5、有关类的说法正确的是(B)知识点类的封装A.类具有封装性,所以类的数据是不能被访问的B.类具有封装性,但可以通过类的公共接口访问类中的数据C.声明一个类时,必须使用public修饰符D.每个类中必须有main方法,否则程序无法运行
6、将类的访问权限设置为默认的,则该成员能被(A)(知识点访问权限)A.同一包中的类访问B.其他包中的类访问C.所有的类访问D.所有的类的子类访问
7、假设下面的程序代码都放在MyClass.java文件中,(D)程序代码能够编译通过(知识点Java包的概念)A.importjava.awt.*;packagemypackage;calssMyClass{}B.packagemypackage;importjava.awt.*;publicclassmyClass{}C.intm;packagemypackage;importjava.awt.*;classMyClass{}D./*Thisisacomment*/packagemypackage;importjava.awt.*;publicclassMyClass{}
8、假设在java源程序文件“MyClass.java”中只含有一个类,而且这个类必须能够被位于一个庞大的软件系统中的所有java类访问到,那么下面声明有可能是符合要求的类声明(知识点访问权限)CA.privateclassMyClassextendsObjectB.publicclassmyclassextendsObjectC.publicclassMyClassD.classMyClassextendsObjectⅡ.程序分析题
1、分析并完善如下程序,并写出最后执行结果知识点类的继承super关键字使用packagepeople;classPerson{Stringname=zhangsan;intage=18;doubleheight=
1.75;publicPerson{System.out.printlnPerson;}publicPersonStringn{System.out.printlnPersonStringn;name=n;}publicPersonStringnintadoubleh{System.out.printlnPersonStringnintadoubleh;name=n;age=a;height=h;}publicvoidsayHello{System.out.printlnHello!;}}classStudent4extendsPerson{doublescore=0;publicStudent4{__this__aa10;System.out.printlnStudent;}publicStudent4Stringndoubles{__super__n;score=s;System.out.printlnStudentStringndoubles;}publicStudent4Stringnintadoublehdoubles{__this__ns;age=a;height=h;score=s;System.out.printlnStudentStringnintadoublehdoubles;}publicvoidstudy{score++;}publicvoidsayHello{__this/super__.sayHello;System.out.printlnHelloteacher!;inti=this.age;intj=super.age;}publicstaticvoidmainStringargs[]{Student4s4=newStudent4;__s4__.sayHello;}}
2、找出程序中的错误,并说明原因(知识点final关键字使用)publicclassFinalVar{finalinty=100;finalintx1;publicFinalVar{x1=1;}publicstaticvoidmainString[]args{finalintz=0;}publicvoidaa{FinalVar.add1;}publicstaticvoidaddfinalintx2{//final关键字修饰的x2为一个常数,不可以再将它当作变量使用x2++;}}
3、找出程序中的错误,并说明原因(知识点final关键字使用)finalclassFinalClass{publicvoidaddintx{x++;}}publicclassSubFinalDemoextendsFinalClass{//final修饰的类是不可以用来继承的publicvoidaddintx{x+=2;}}
4、找出程序中的错误,并说明原因(知识点final关键字使用)classFinalClass{publicfinalvoidaddintx{x++;}}publicclassSubFinalDemoextendsFinalClass{publicvoidaddintx{//fianl修饰的方法不可以被重写x+=2;}}Ⅲ.编程题
1、如下两个类之间存在一定的联系,请用面向对象的特性实现类及其关系packagepeople;publicclassPerson{publicStringname;publicintage;publicdoubleheight;publicPersonStringnameintagedoubleheight{this.name=name;this.age=age;this.height=height;}publicvoidsayhello{System.out.printlnname+age+height;}}publicclassStudentextendsPerson{publicdoublescore;publicStudentStringnameintagedoubleheightdoublescore{superzhangsan21183;this.score=score;//TODOAuto-generatedconstructorstub}publicvoidstudy{}publicvoidsayhello{}publicstaticvoidmainString[]args{//TODOAuto-generatedmethodstubStudents=newStudentzhangsan211839;}}
2、1定义一个汽车类Vehicle,要求如下(知识点类的继承方法的覆盖)(a)属性包括汽车品牌brand(String类型)、颜色color(String类型)和速度speed(double类型)(b)至少提供一个有参的构造方法(要求品牌和颜色可以初始化为任意值,但速度的初始值必须为0)(c)为属性提供访问器方法注意汽车品牌一旦初始化之后不能修改(d)定义一个一般方法run,用打印语句描述汽车奔跑的功能定义测试类VehicleTest,在其main方法中创建一个品牌为“benz”、颜色为“black”的汽车packagecar;publicclassVehicle{Stringbrand;Stringcolor;doublespeed=0;publicVehicleStringbrandStringcolor{this.brand=brand;this.color=color;}publicvoidrun{System.out.println跑的块;}}packagecar;publicclassVehicleTest{publicVehicleTest{//TODOAuto-generatedconstructorstub}publicstaticvoidmainString[]args{Vehiclev=newVehiclebenzblack;v.run;}}2定义一个Vehicle类的子类轿车类Car,要求如下(a)轿车有自己的属性载人数loader(int类型)(b)提供该类初始化属性的构造方法c重新定义run,用打印语句描述轿车奔跑的功能(d)定义测试类Test,在其main方法中创建一个品牌为“Honda”、颜色为“red”,载人数为2人的轿车packagecar;publicclassCarextendsVehicle{intloaderl;publicCarStringbrandStringcolor{superbrandcolor;//TODOAuto-generatedconstructorstub}publicintgetLoaderl{returnloaderl;}publicvoidsetLoaderlintloaderl{this.loaderl=loaderl;}publicvoidrun{System.out.println我是+brand+车+颜色为+color+限载+loaderl+人;}}packagecar;publicclassTest{publicTest{//TODOAuto-generatedconstructorstub}publicstaticvoidmainString[]args{Carc=newCarHondared;c.setLoaderl2;c.run;}}
3、设计四个类,分别是(知识点抽象类及抽象方法)
(1)Shape表示图形类,有面积属性area、周长属性per,颜色属性color,有两个构造方法(一个是默认的、一个是为颜色赋值的),还有3个抽象方法,分别是getArea计算面积、getPer计算周长、showAll输出所有信息,还有一个求颜色的方法getColor
(2)2个子类1)Rectangle表示矩形类,增加两个属性,Width表示长度、height表示宽度,重写getPer、getArea和showAll三个方法,另外又增加一个构造方法(一个是默认的、一个是为高度、宽度、颜色赋值的)2)Circle表示圆类,增加1个属性,radius表示半径,重写getPer、getArea和showAll三个方法,另外又增加两个构造方法(为半径、颜色赋值的)
(3)一个测试类PolyDemo,在main方法中,声明创建每个子类的对象,并调用2个子类的showAll方法packageshape;publicabstractclassshqpe{doublearea;doubleper;Stringcolor;publicshqpe{//TODOAuto-generatedconstructorstub}publicabstractdoublegetArea;publicabstractdoublegetPer;publicabstractdoublegetshowall;publicvoidsetColorStringcolor{this.color=color;}}packageshape;publicclassRectangleextendsshqpe{doublewidth;doubleheight;publicRectangle{}publicdoublegetArea{returnwidth*height;}publicdoublegetPer{return2*width*height;}publicdoublegetshowall{System.out.println矩形的面积是+getArea;System.out.println矩形的周长是+getPer;return0;}publicvoidsetvaluedoublewidthdoubleheight{this.width=width;this.height=height;}}packageshape;publicclasscircleextendsshqpe{doubleradius;publiccircle{}publicdoublegetArea{returnradius*radius*
3.14;}publicdoublegetPer{return2*radius*
3.14;}publicdoublegetshowall{System.out.println圆的面积是+getArea;System.out.println圆的周长是+getPer;return0;}publicvoidsetRadiusdoubleradius{this.radius=radius;}}packageshape;publicclassPolydemo{publicPolydemo{//TODOAuto-generatedconstructorstub}publicstaticvoidmainString[]args{Rectangler=newRectangle;r.width=
12.0;r.height=
3.0;circlec=newcircle;c.radius=
5.0;r.getshowall;c.getshowall;}}
4、Cola公司的雇员分为以下若干类知识点多态1ColaEmployee这是所有员工总的父类,属性员工的姓名员工的生日月份方法getSalaryintmonth根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元2SalariedEmployee ColaEmployee的子类,拿固定工资的员工属性月薪3HourlyEmployee ColaEmployee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照
1.5倍工资发放属性每小时的工资、每月工作的小时数4SalesEmployee ColaEmployee的子类,销售人员,工资由月销售额和提成率决定属性月销售额、提成率5定义一个类Company,在该类中写一个方法,调用该方法可以打印出某月某个员工的工资数额,写一个测试类TestCompany在main方法,把若干各种类型的员工放在一个ColaEmployee数组里,并单元出数组中每个员工当月的工资packagecompany;publicclassColaEmployee{Stringname;intbirth;publicColaEmployeeStringnameintbirth{//TODOAuto-generatedconstructorstubthis.name=name;this.birth=birth;}publicintgetsalaryintsal{returnsal;}}packagecompany;publicclassSalaryiedemployeeextendsColaEmployee{doublesalarymonth;publicSalaryiedemployeeStringnameintbirthdoublesalarymonth{supernamebirth;this.salarymonth=salarymonth;//TODOAuto-generatedconstructorstub}}packagecompany;publicclassSalesEmployeeextendsColaEmployee{intxiaoshou;doublerase;publicSalesEmployeeStringnameintbirthintxiaoshoudoublerase{supernamebirth;this.xiaoshou=xiaoshou;this.rase=rase;//TODOAuto-generatedconstructorstub}}packagecompany;publicclassHourlyEmployeeextendsColaEmployee{intsalary;inthours;publicHourlyEmployeeStringnameintbirthintsalaryinthours{supernamebirth;this.salary=salary;this.hours=hours;//TODOAuto-generatedconstructorstub}}packagecompany;publicclassCompany{publicCompany{//TODOAuto-generatedconstructorstub}publicstaticvoidmainString[]args{Salaryiedemployees=newSalaryiedemployee普通员工21;SalesEmployees1=newSalesEmployee中级员工
6200000.5;HourlyEmployees2=newHourlyEmployee高级员工5100182;System.out.printlns.name+本月工资是+s.salarymonth*3500;System.out.printlns
1.name+本月工资是+s
1.xiaoshou*s
1.rase;System.out.printlns
2.name+本月工资是+s
2.hours-160*s
2.salary*
1.5+160*s
2.salary;//TODOAuto-generatedmethodstub}}Ⅳ选做题
1、编写三个系别的学生类英语系,计算机系,文学系(要求通过继承学生类)各系有以下成绩(知识点面向对象综合应用、数组中元素为引用类型)英语系演讲,期末考试,期中考试;计算机系操作能力,英语写作,期中考试,期末考试;文学系演讲,作品,期末考试,期中考试;各系总分评测标准英语系演讲50%期末考试25%期中考试25%计算机系操作能力40%英语写作20%期末考试20%期中考试20%文学系演讲35%作品35%期末考试15%期中考试15%定义一个可容纳5个学生的学生类数组,使用随机数给该数组装入各系学生的对象,然后按如下格式输出数组中的信息学号:XXXXXXXX姓名XXX性别X年龄XX综合成绩XX。