面向对象专题练习.docx
- 文档编号:25403775
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:18
- 大小:31.30KB
面向对象专题练习.docx
《面向对象专题练习.docx》由会员分享,可在线阅读,更多相关《面向对象专题练习.docx(18页珍藏版)》请在冰豆网上搜索。
面向对象专题练习
**专题5面向对象
一、填空题
1.如果一个方法不返回任何值,则该方法的返回值类型为void。
(//有无返回值的意义何在?
?
?
)
2.如果子类中的某个方法名、返回值类型和_参数列表_____与父类中的某个方法完全一致,则称子类中的这个方法覆盖了父类的同名方法。
3.接口中所有的属性均为_public_、_final_____和_static__的,方法(publicabstract)
4.抽象 方法是一种仅有方法声明,没有具体方法体和操作实现的方法,该方法必须在具体类之中定义。
5.在Java程序中,通过类的定义只能实现单重继承,但通过接口的定义可以实现多重继承关系。
6.一般Java程序的类主体由两部分组成:
一部分是属性,另一部分是方法。
7.分别用class关键字来定义类,用new关键字来分配实例存储空间。
8.当一个类的修饰符为final时,说明该类不能被继承,即不能有子类。
9.在Java中,能实现多重继承效果的方式是接口。
二、选择题
1.方法内定义的变量(B)。
A.一定在方法内所有位置可见B.可能在方法的局部位置可见(for循环)
C.在方法外可以使用D.在方法外可见
2.方法的形参()。
A.可以没有B.至少有一个
C.必须定义多个形参D.只能是简单变量
3.return语句()。
A.不能用来返回对象B.只可以返回数值
C.方法都必须含有D.一个方法中可以有多个(但是返回只有一个)
4.main()方法的返回值类型是()
A.booleanB.int
C.voidD.static
5.编译并运行下面的程序,运行结果是()。
publicclassA{
publicstaticvoidmain(Stringargs[]){
Aa=newA();
a.method(8);
}
voidmethod(inti){
System.out.println(“int:
”+i);
}
voidmethod(longi){
System.out.println(“long:
”+i);
}
A.程序可以编译运行,输出结果为:
“int:
8”
B.程序可以编译运行,输出结果为:
“long:
8”
C.程序有编译错误,因为两个method()方法必须定义为静态(static)的
D.程序可以编译运行,但是没有输出
6.能作为类及其成员的修饰符是()。
A.interfaceB.class
C.protectedD.public
7.下列方法定义中,方法头不正确的是()。
A.publicstaticx(doublea){…}B.publicstaticintx(doubley){…}
C.voidx(doubled){…}D.publicintx(){…}
8.构造方法在()时被调用。
A.类定义时B.使用对象的变量时
C.调用对象方法时D.创建对象时
9.下列哪个类声明是正确的()。
A.publicabstractclassCar{…}B.abstractprivatemove(){…}
C.protectedprivatenumber;D.abstractfinalclassH1{…}
10.下列不属于面向对象程序设计的基本特征的是()。
A.抽象B.封装
C.继承D.静态
11.请看下面的程序段
classPerson{
Stringname,department;
intage;
publicPerson(Stringn){name=n;}
publicPerson(Stringn,inta){name=n;age=a;}
publicPerson(Stringn,Stringd,inta){
//doingthesameastwoargumentsversionifconstructer
}
下面那个选项可以添加到//doingthesame……处(C)
A.Person(n,a)B.this(Person(n,a))
C.this(n,a)D.this(name.age)
12.请看下面的程序段
classTest{
privateintm;
publicstaticvoidfun(){
//somecode
}
}
方法fun()如何来访问变量m(C)
A.将privateintm改成protectedintmB.将privateintm改成publicintm
C.将privateintm改成staticintmD.将privateintm改成intm
13.有一个类A,对于其构造函数的声明正确的是()。
A.voidA(intx){…}B.publicA(intx){…}
C.AA(intx){…}D.intA(intx){…}
14.请看下面的程序段
publicclassTest{
longa[]=newlong[10];//这里没有static修饰
pubicstaticvoidmain(Stringargs[]){
System.out.println(a[6]);
}
}
哪一个选项是正确的(C)。
A.不输出任何内容B.输出0
C.当编译时有错误出现D.当运行时有错误出现
15.关键字(B)表明一个对象或变量在初始化后不能修改。
A.extendsB.final
C.thisD.finalize
16.声明为static的方法不能访问(C)类成员。
A.超类B.子类
C.非staticD.用户自定义类
17.定义类A如下:
classA{
inta,b,c;
publicvoidB(intx,inty,intz){a=x;b=y;c=z;}
}
下面对方法B的重载哪些是正确的(C)。
A.publicvoidA(intx1,inty1,intz1){a=x1;b=y1;c=z1;}
B.publicvoidB(intx1,inty1,intz1){a=x1;b=y1;c=z1;}
C.publicvoidB(intx,inty){a=x;b=y;c=0;}
D.publicB(intx,inty,intz){a=x;b=y;c=z;}
18.编译运行下面的程序,结果是()。
publicclassA{
publicstaticvoidmain(Stringargs[]){
Bb=newB();
b.test();
}
voidtest(){
System.out.print(“A”);
}
}
classBextendsA{
voidtest(){
super.test();
System.out.print(“B”);
}
}
A.产生编译错误B.代码可以编译运行,并输出结果:
AB
C.代码可以编译运行,但没有输出D.编译没有错误,但会产生运行时异常
19.已知类关系如下:
ClassEmployee{}
ClassManagerextendsEmployee{}
ClassDirectorextendsEmployee{}
则下列语句正确的是:
()。
A.Employeee=newManager();B.Directord=newManager();
C.Directord=newEmployee();D.Managerm=newDirector();
20.接口是Java面向对象的实现机制之一,以下说法正确的是(B)。
A.Java支持多重继承,一个类可以实现多个接口
B.Java只支持单重继承,一个类可以实现多个接口
C.Java只支持单重继承,一个类可以实现一个接口
D.Java支持多重继承,但一个类只可以实现一个接口
21.下列方法的声明中不合法的是。
A.floatarea(){…}B.voidarea(){…}
C.area{…}D.intarea(intr){…}
22、下面哪个包是编程时不需要导入就可以直接使用的。
A.B.java.langC.java.sqlD.java.util
23、调用构造方法是在。
A.类定义时 B.创建对象时
C.调用对象的方法时 D.使用对象的变量时
24、在子类构造方法的哪个地方可以调用其父类的构造方法B。
A.任何地方
B.构造方法的第一条语句
C.构造方法的最后一条语句
D.无法在子类构造方法中调用父类的构造方法
25、关于Java中的继承,下列说法错误的是。
A.继承是面向对象编程的核心特征,通过继承可以更有效地组织程序结构。
B.继承使得程序员可以在原有类的基础上很快设计出一个功能更强的新类,而不必从头开始,避免了工作上的重复。
C.每一次继承时,子类都会自动拥有父类的属性和方法,同时也可以加入自己的一些特性,使得它更具体、功能更强大。
D.继承一般有多重继承和单一继承两种方式,在单一继承中每一个类最多只有一个父类,而多重继承则可以有多个父类。
Java中的类都采用多重继承。
26、当方法中的局部变量与成员变量同名时,必须使用下列哪一个关键字指出成员变量C。
A.staticB.superC.thisD.new
27、什么样的方法不能被重写B。
A.私有(private)方法B.最终(final)方法
C.受保护(protected)的方法D.以上都不对
28、下列有关抽象类与接口的叙述中正确的是哪一个C。
A.抽象类中必须有抽象方法,接口中也必须有抽象方法
B.抽象类中可以有非抽象方法,接口中也可以有非抽象方法
C.含有抽象方法的类必须是抽象类,接口中的方法必须是抽象方法
D.抽象类中的变量定义时必须初始化,而接口中不是
29、从下列程序中你发现了几处错误D。
abstractclassA{
abstractvoidf(){};//抽象方法没有方法体。
publicabstractvoidk();
}
classBextendsA{
protectedvoidf(){}//子类修饰符必须大于父类
voidk(){//子类修饰符必须大于父类
System.out.print("Iamsubclass");
}
publicstaticvoidmain(String[]args){
Aa=newA();
a.f();//可以在本类被调用
a.k();
}
}
A.1B.2C.3D.4
30、下列程序运行的结果是A。
interfaceInterfaceA{//接口A
Strings="good";
voidf();
}
classClassAimplementsInterfaceA{
publicvoidf(){//修饰符必须大于接口的范围,对了
System.out.print(s);
}
}
classClassB{
voidg(InterfaceAa){//g方法传入的a为interfaceA类(接口类型引用)
a.f();
}
}
publicclassE{
publicstaticvoidmain(String[]args){
ClassBb=newClassB();
b.g(newClassA());
}
}
A.goodB.编译正确,但无运行结果
C.编译错误:
b.g(newClassA())D.以上都不对
31、下列类的声明中不合法的是A。
A.classPeople(){…}B.class植物{…}
C.classA{…}D.publicclass共有类{…}
32、能作为类的修饰符,也能作为类成员的修饰符的是A。
A.publicB.extendsC.FloatD.static
33、试完成下述程序片段B。
publicclassPoint{
intx,y;
publicPoint(intx,inty){//有参构造方法
(this.x)=x;
(this.y)=y;
}
......
}
A.Point.xPoint.yB.this.xthis.y
C.super.xsuper.yD.无解
34、在JAVA中,下列说法正确的是:
。
A.一个子类可以有多个父类,一个父类也可以有多个子类
B.一个子类可以有多个父类,但一个父类只可以有一个子类
C.一个子类只可以有一个父类,但一个父类可以有多个子类
D.上述说法都不对
35、Father和Son是两个java类,下列哪一选项正确的标识出Father是Son的父类?
A.classSonimplementsFatherB.classFatherimplementsSon
C.classFatherextendsSonD.classSonextendsFather
36、重载指的是方法具有相同的名字,但这些方法的参数必须不同。
下列哪种说法不属于方法参数的不同C。
//方法参数不一样,表示参数类型不同,个数不同,
A.形式参数的个数不同。
B.形式参数的类型不同。
C.形式参数的名字不同。
D.形式参数类型的排列顺序不同。
37、下列有关抽象类与接口的叙述中正确的是哪一个。
A.抽象类中必须有抽象方法,接口中也必须有抽象方法
B.抽象类中可以有非抽象方法,接口中也可以有非抽象方法
C.含有抽象方法的类必须是抽象类,接口中的方法必须是抽象方法
D.抽象类中的变量定义时必须初始化,而接口中不是
38、从下列程序中你发现了几处错误。
abstractclassA{
abstractvoidf(){};//抽象方法没有方法体。
publicabstractvoidk();
}
classBextendsA{
protectedvoidf(){}//修饰符的范围要大于等于父类的。
voidk(){//default修饰符的范围要大于等于父类的。
System.out.print("Iamsubclass");
}
publicstaticvoidmain(String[]args){
Aa=newA();
a.f();
a.k();
}
}
A.1B.2C.3D.4
39、关于接口的定义和实现,以下描述正确的是A。
A.接口定义的方法只有定义没有实现
B.接口定义中的变量都必须写明final和static
C.如果一个接口由多个类来实现,则这些类在实现该接口中的方法时采用统一的代码
D.如果一个类实现接口,则必须实现该接口中的所有方法,但方法未必申明为public
三、阅读程序题
1、写出运行结果:
mainbord:
华硕,cpu:
Intel。
publicclassComputer{
Stringmainbord,cpu;
publicComputer(Strings1,Strings2){
mainbord=s1;
cpu=s2;
}
publicstaticvoidmain(String[]args){
Computerc=newComputer("华硕","Intel");
System.out.println("mainbord:
"+c.mainbord+",cpu:
"+c.cpu);
}
}
2、写出运行结果:
025。
0+1+3+5+7+9=25
publicclassExamA{
privatestaticintarr[]=newint[5];
publicstaticvoidmain(Stringargs[]){
for(inti=arr.length-1;i>=0;i--)
arr[i]=2*i+1;
Stringoutput="0";
intsum=0;
for(inti=0;i sum+=arr[i]; output+="+"+arr[i]; } output+="="+sum; System.out.println(output); System.exit(0); } } 3、写出运行结果: Peteris17yearsold! 。 publicclassPerson{ Stringname; intage; publicPerson(Stringname,intage){ (是成员变量)this.name=name(参数); this.age=age; } publicstaticvoidmain(String[]args){ Personc=newPerson("Peter",17); System.out.println(c.name+"is"+c.age+"yearsold! "); } } 4、写出运行结果: a=60,b=20,c=30 public class abc{ public static void main(String args[]){ SubSubClass x=new SubSubClass(10,20,30); x.show(); } } class SuperClass{ int a,b; SuperClass(intaa,int bb){ a=aa; b=bb; } void show(){ System.out.println("a="+a+"b="+b); //a=aa,b=bb } } class SubClass extends SuperClass{ intc; SubClass(int aa,int bb,int cc){ super(aa,bb); c=cc;//a=aa,b=bb,c=cc } } class SubSubClass extends SubClass{ int a; SubSubClass(intaa,int bb,int cc){ super(aa,bb,cc); a=aa+bb+cc;//a=10+20+30=60 } void show(){ System.out.println("a="+a+"b="+b+"c="+c); } } 5.下面是一个类的定义,请将其补充完整 class_Student_____{//student的类 Stringname; intage; Student(_String_____name,inta){ __this_.name=name; age=a; } } 6.下面是一个类的定义,请将其补充完整 class__A__{ Strings; _static_inta=3; A(Strings){ this.s=s; } staticintgetA(){ returna; } } 四、编程题 1.按要求编写一个Java应用程序: (1)定义一个接口CanCry,描述会吼叫的方法publicvoidcry()。 (2)分别定义狗类(Dog)和猫类(Cat),实现CanCry接口。 实现方法的功能分别为: 打印输出“我是狗,我的叫声是汪汪汪”、“我是猫,我的叫声是喵喵喵”。 (3)定义一个主类G, ①定义一个voidmakeCry(CanCryc)方法,其中让会吼叫的事物吼叫。 ②在main方法中创建狗类对象(dog)、猫类对象(cat)、G类对象(g),用g调用makecry方法,让狗和猫吼叫。 2、编写一个Java程序,并满足如下要求: 1)编写一个Car类,具有: 属性: 品牌(mark)——String类型 功能: 驾驶(voiddrive()) 2)定义Car类的子类SubCar,具有: 属性: 价格(price)、速度(speed)——int型 功能: 变速(voidspeedChange(intnewSpeed)),把新速度赋给speed 3)定义主类E,在其main方法中创建SubCar类的两个对象: aodi和benchi的对象并测试其对象的特性。 4)输出效果如下: 3.某公司正进行招聘工作,被招聘人员需要填写个人信息,编写“个人简历”的封装类。 包括如下属性和对属性进行操作的方法。 Stringxm;//姓名 Stringxb;//性别 intnl;//年龄 Stringjtzz;//家庭住址 Stringxl;//学历 4.编写程序,提供实现各种数学计算的方法。 包括如下几项。 (1)两个数的加、减、乘、除。 (2)求某数的相反数、倒数、绝对值。 (3)取两数中较大的和较小的。 (4)对浮点数(double型)的计算功能。 如: 给定浮点数d,取大于或等于d的最小整数,取小于或等于d的最大整数,计算最接近d的整数值,计算d的平方根、自然对数log(d)等。 (5)计算以double型数a为底数,b为指数的幂。 5.编写一个抽象类Shape,声明计算图形面积的抽象方法。 再分别定义Shape的子类Circle(圆)和Rectangle(矩形),在两个子类中按照不同图形的面积计算公式,实现Shape类中计算面积的方法。 6.定义一个接口,接口中有3个抽象方法如下。 (1)“longfact(intm);”方法的功能为求参数的阶乘。 (2)“longintPower(intm,intn);”方法的功能为求参数m的n次方。 (3)“booleanfindFactor(intm,intn);”方法的功能为判断参数m加上参数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 专题 练习