面向对象编程练习题库test.docx
《面向对象编程练习题库test.docx》由会员分享,可在线阅读,更多相关《面向对象编程练习题库test.docx(13页珍藏版)》请在冰豆网上搜索。
面向对象编程练习题库test
面向对象编程练习题
专题1初识Java
一、填空题
1.自从Sun推出Java以来,按应用范围可分为三个版本,分别是()、()、()。
2.环境变量的设置,若JDK安装在“D:
\JDK”,则应设置Path为()、classpath为()。
3.Java源文件的扩展名为(),用Javac编译Java源文件,得到的字节码文件的扩展名为()。
4.如果Java源文件中有多个类,那么只能有一个类是()类。
二、选择题
1.作为Java应用程序入口的main方法,其声明格式是()
A.publicstaticintmain(Stringargs[])B.publicstaticvoidmain(Stringargs[])
C.publicvoidmain(Stringargs[])D.publicintmain(Stringargs[])
2.下面命令正确的是()
A.javaAppFirst.javaB.javaAppFirst
C.javaappfirst.classD.javacAppFirst
3.设有一个Java小程序,源程序名为FirstApplet.java,其HTML文件为FirstApplet.html,则运行该小程序的命令为()
A.javaFirstAppletB.javacFirstApplet.java
C.appletviewerFirstApplet.javaD.appletviewerFirstApplet.html
4.JDK安装完成后,主要的命令如javac、java等,都存放在根目录的()文件夹下。
A.binB.jreC.includeD.doc
5.Java语言是一种语言。
A.机器B.汇编C.面向过程的D.面向对象的
6、Java程序的最基本组成单位是()。
A.函数B.过程C.变量D.类
7.main()方法的返回值类型是()。
A.booleanB.intC.voidD.static
8.下面哪个单词是Java语言的关键字()A.FalseB.FORC.ForD.for
9.、线程是Java的()机制。
A.检查B.解释执行C.并行D.并发
专题2标识符、表达式、数据类型
一、填空题
1.Java逻辑常量有两个:
()和()。
2.比较两个数相等的运算符是:
。
4、Java中的八种基本数据类型分别是:
char、、、、、、和。
二、选择题
1.下面这些标识符哪个是错误的()
A.JavaworldB._sumC.2JavaProgramD.$abc
2、下面哪个赋值语句不会产生编译错误()
A.chara=’abc’;B.byteb=152;C.floatc=2.0;D.doubled=2.0;
3.下面哪个单词是Java语言的关键字()
A.FalseB.FORC.ForD.for
4.若变量都已经正确说明,则以下程序段输出为()
a=10;b=50;c=30;
if(a>b)a=b;b=c;
c=a;
A.a=10b=50c=10B.a=10b=30c=10
C.a=50b=30c=10D.a=50b=30c=30
5.下列标识符中,正确的是。
A、1_BackB、$_MoneyC、$-moneyD、2-Forward
6.现有一个int类型的整数和一个double类型的浮点数,当它们之间做了加法运算之后,得到的结果类型应该是。
A、int类型B、double类型C、float类型D、long类型
7、对下面的语句执行完后正确的说法是:
()
intc=’c’/3;
A.输出结果为21B.输出结果为22C.输出结果为32D.输出结果为33
8、设有定义inta=12;则执行a*=12;语句后,a的值为:
()。
A.144B.12C.24D.0
专题3流程控制语句
一、填空题
1.在switch语句中的表达式的类型必须是()【存放类型】。
2.break在循环语句中的作用是()。
3.分支语句包括()和()。
4.while循环语句的循环次数(),do-while语句的循环次数(),for语句的循环次数()。
5.continue在循环语句中的作用是()。
专题4面向对象
一、填空题
1.如果一个方法不返回任何值,则该方法的返回值类型为。
2.如果子类中的某个方法名、返回值类型和_______与父类中的某个方法完全一致,则称子类中的这个方法了父类的同名方法。
3.接口中所有的属性均为__、_______和______的
4. 方法是一种仅有方法声明,没有具体方法体和操作实现的方法,该方法必须在类之中定义。
5.在Java程序中,通过类的定义只能实现重继承,但通过的定义可以实现多重继承关系。
6.一般Java程序的类主体由两部分组成:
一部分是,另一部分是。
7.分别用关键字来定义类,用关键字来分配实例存储空间。
8.当一个类的修饰符为时,说明该类不能被继承,即不能有子类。
9.在Java中,能实现多重继承效果的方式是。
二、选择题
1..有一个类A,对于其构造方法的声明正确的是(B)。
//与类同名,没有返回值
A.voidA(intx){…}B.publicA(intx){…}
C.AA(intx){…}D.intA(intx){…}
2.方法的形参()。
A
A.可以没有B.至少有一个
C.必须定义多个形参D.只能是简单变量
3.return语句(D)
A.不能用来返回对象B.只可以返回数值
C.方法都必须含有D.一个方法中可以有多个
4.main()方法的返回值类型是(C)
A.booleanB.int
C.voidD.static
5.编译并运行下面的程序,运行结果是()。
publicclassA{
publicstaticvoidmain(Stringargs[]){
Aa=newA();
a.method(8);
//intdouble默认
}
voidmethod(inti){
“int:
”+i);
}
voidmethod(longi){
“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.有一个类A,对于其构造函数的声明正确的是()。
A.voidA(intx){…}B.publicA(intx){…}
C.AA(intx){…}D.intA(intx){…}
12.关键字()表明一个对象或变量在初始化后不能修改。
A.extendsB.final
C.thisD.finalize
13.声明为static的方法不能访问()类成员。
A.超类B.子类
C.非staticD.用户自定义类
14.定义类A如下:
classA{
inta,b,c;
publicvoidB(intx,inty,intz){a=x;b=y;c=z;}
}
下面对方法B的重载哪些是正确的()。
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;}
15.编译运行下面的程序,结果是()。
publicclassA{
publicstaticvoidmain(Stringargs[]){
Bb=newB();
b.test();
}
voidtest(){
}
}
classBextendsA{
voidtest(){
super.test();
}
}
A.产生编译错误B.代码可以编译运行,并输出结果:
AB
C.代码可以编译运行,但没有输出D.编译没有错误,但会产生运行时异常
16.已知类关系如下:
ClassEmployee{}
ClassManagerextendsEmployee{}
ClassDirectorextendsEmployee{}
则下列语句正确的是:
()。
A.Employeee=newManager();B.Directord=newManager();
C.Directord=newEmployee();D.Managerm=newDirector();
17.接口是Java面向对象的实现机制之一,以下说法正确的是()。
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、在子类构造方法的哪个地方可以调用其父类的构造方法。
A.任何地方
B.构造方法的第一条语句
C.构造方法的最后一条语句
D.无法在子类构造方法中调用父类的构造方法
25、关于Java中的继承,下列说法错误的是。
A.继承是面向对象编程的核心特征,通过继承可以更有效地组织程序结构。
B.继承使得程序员可以在原有类的基础上很快设计出一个功能更强的新类,而不必从头开始,避免了工作上的重复。
C.每一次继承时,子类都会自动拥有父类的属性和方法,同时也可以加入自己的一些特性,使得它更具体、功能更强大。
D.继承一般有多重继承和单一继承两种方式,在单一继承中每一个类最多只有一个父类,而多重继承则可以有多个父类。
Java中的类都采用多重继承。
26、当方法中的局部变量与成员变量同名时,必须使用下列哪一个关键字指出成员变量。
A.staticB.superC.thisD.new
27、什么样的方法不能被重写。
A.私有(private)方法B.最终(final)方法
C.受保护(protected)的方法D.以上都不对
28、下列有关抽象类与接口的叙述中正确的是哪一个。
A.抽象类中必须有抽象方法,接口中也必须有抽象方法
B.抽象类中可以有非抽象方法,接口中也可以有非抽象方法
C.含有抽象方法的类必须是抽象类,接口中的方法必须是抽象方法
D.抽象类中的变量定义时必须初始化,而接口中不是
29、以下程序的输出是a=2,b=0
intx=1,y=0,a=0,b=0;
switch(x){
case1:
switch(y){
case0:
a++;break;
case1:
b++;break;
}
//a=1b=0
case2:
a++;break;
case3:
a++;b++;
}
30、下列类的声明中不合法的是。
A.classPeople(){…}B.class植物{…}
C.classA{…}D.publicclass共有类{…}
32、能作为类的修饰符,也能作为类成员的修饰符的是。
A.publicB.extendsC.FloatD.static
33、试完成下述程序片段。
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、重载指的是方法具有相同的名字,但这些方法的参数必须不同。
下列哪种说法不属于方法参数的不同。
A.形式参数的个数不同。
B.形式参数的类型不同。
C.形式参数的名字不同。
D.形式参数类型的排列顺序不同。
39、关于接口的定义和实现,以下描述正确的是。
A.接口定义的方法只有定义没有实现
B.接口定义中的变量都必须写明final和static
C.如果一个接口由多个类来实现,则这些类在实现该接口中的方法时采用统一的代码
D.如果一个类实现接口,则必须实现该接口中的所有方法,但方法未必申明为public
三、阅读程序题
1、写出运行结果:
mainbord:
微星,cpu:
AMD。
publicclassComputer{
Stringmainbord,cpu;
publicComputer(Strings1,Strings2){
mainbord=s1;
cpu=s2;
}
publicstaticvoidmain(String[]args){
Computerc=newComputer("微星","AMD");
cpu:
"+c.cpu);
}
}
2、写出运行结果:
Marryis18yearsold!
。
publicclassPerson{
Stringname;
intage;
publicPerson(Stringname,intage){
this.name=name;
this.age=age;
}
publicstaticvoidmain(String[]args){
Personc=newPerson("Marry",18);
}
}
3、下面是一个类的定义,请将其补充完整
class___Stud___{
Stringname;
intage;
Stud(___String___name,inta){
_this___.name=name;
age=a;
}
}
4.下面是一个B.java源文件,请将其补充完整
publicclassB{
Stringx;
___static_inta=3;
B(Stringx){
this.x=x;
}
staticintgetA(){
returna;
}
}
编程题
1.编写一个Java程序,定义一个Shape类,具有:
属性:
形状(form)——String类型,功能:
求面积(doublearea());再定义Shape类的子类Circle,具有:
属性:
半径(raduis)——double型,功能:
设置半径(voidsetraduis(doublenewRaduis)),把新半径赋给raduis。
2.定义一个人类,包括属性:
姓名、性别、年龄;包括方法:
吃饭、睡觉,工作。
根据人类,派生一个学生类,增加属性:
学校、学号;学生的工作是学习。