java面向对象编程类的封装接口和基本类库练习题.docx
《java面向对象编程类的封装接口和基本类库练习题.docx》由会员分享,可在线阅读,更多相关《java面向对象编程类的封装接口和基本类库练习题.docx(20页珍藏版)》请在冰豆网上搜索。
java面向对象编程类的封装接口和基本类库练习题
面向对象编程基本知识练习
一、判断题
1.不需要定义类,就能创建对象。
()
2.构造方法用于给类的private实例变量赋值。
()
3.对象一经声明就可以立即使用。
()
4.在定义变量和方法时,必须清楚地在其面前标上访问权限修饰符。
()
5.Java程序中的参数传递都是把参数值传递给方法定义中的参数。
()
6.在类定义中,成员访问权限修饰符不能多次出现。
()
7.new操作符动态地为对象按其指定的类型分配内存,并返回该类型的一个引用。
()
8.类的方法通常设为public,而类的实例变量一般也设为public。
()
9.构造方法在创建对象时被调用。
()
10.通过点运算符与类对象的引用相连,可以访问此类的成员。
()
11.声明为protected的类成员只能被此类中的方法访问。
()
12.同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间。
()
13.类的成员变量可以放在类体的任意位置。
()
14.声明为protected的类成员可以被此类作用域中的任何对象访问。
()
15.没有返回值的方法可以用void来表示,也可以不加。
()
二、选择题
1.下面对对象概念描述错误的是:
()
A操作是对象的动态属性
B任何对象都必须有继承性
C对象间的通讯靠消息传递
D对象是属性和方法的封装体
2.编译并运行下面的程序,运行结果为:
()
publicclassA
{
publicstaticvoidmain(String[]args)
{
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程序可以编译运行,但没有输出
3.下面关于类的说法不正确的是:
()
A类是Java语言中的一种复合数据类型
B类中不包含数据变量和方法
C类是对所有具有一定共性的对象的抽象
DJava语言的类只支持单继承
4.能作为类及其成员的修饰符是:
()
Ainterface
Bclass
Cprotected
Dpublic
5.设x、y均为已定义的类名,下列声明对象x1的语句不可能正确的是:
()
Apublicxxl=newy();
Bpublicyxl=newx();
Cxxl=newx();
Dxxl=x();
6.面向对象程序设计技术的特点是:
()
A可重用性
B可维护性
C表示方法的一致性
D可重用性、可维护性、表示方法的一致性
7.下列方法定义中,方法头不正确的是:
()
Apublicstaticx(doublea){…}
Bpublicstaticintx(doubley){…}
Cvoidx(doubled)
Dpublicintx(){…}
8.设已声明了一个类A的两个对象al、a2,为了初始化a1和a2,下面语句正确的是:
()
Aal=new();a2=new();
Bal=Anew();a2=Anew();
Cal,a2=newA();
Dal=newA();a2=newA();
9.构造方法何时被调用?
()
A类定义时
B使用对象的变量时
C调用对象方法时
D创建对象时
10.下列哪个类声明是正确的?
()
ApublicabstractclassCar{…}
Babstractprivatemove(){…}
Cprotectedprivatenumber;
DabstractfinalclassHl{…}
11.下列不属于面向对象程序设计的基本特征的是:
()
A抽象
B封装
C继承
D静态
12.请看下面的程序段
classPerson{
Stringname,department;
intage;
publicPerson(Stringn){name=n;}
publicPerson(Stringn,inta){name=n;age=a;}
publicPerson(Stringn,Stringd,inta){
//doingthesameastwoargumentsversionofconstructer
//includingassignmentname=n,age=a
}
}
下面那一选项可以添加到“//doingthesame……”处:
()
APerson(n,a)
Bthis(Person(n,a))
Cthis(n,a)
Dthis(name.age)
13.()是一个特殊的方法,用于对类的实例变量进行初始化。
A终止函数
B构造函数
C重载函数
D初始化函数
14.关于变量和它们范围的说法,正确的是:
()
A实例变量是类的成员变量
B实例变量要用关键字static来声明
C在一个方法执行时,定义在该方法的局部变量才被创建
D局部变量必须在它们使用前初始化
15.请看下面的程序段
classTest{
privateintm;
publicstaticvoidfun(){
//somecode…
}
}
方法fun()如何来访问变量m:
()
A将privateintm改成protectedintm
B将privateintm改成publicintm
C将privateintm改成staticintm
D将privateintm改成intm
16.在Java中,方法main()将返回一个()值。
AString
Bint
Cchar
Dvoid
17.有一个类A,对于其构造函数的声明正确的是()
AvoidA(intx){…}
BpublicA(intx){…}
CAA(intx){…}
DintA(intx){…}
18.请看下面的程序段
publicclassTest{
longa[]=newlong[10];
publicstaticvoidmain(Stringarg[]){
System.out.println(a[6]);
}
}
那一个选项是正确的:
()
A不输出任何内容
B输出0
C当编译时有错误出现
D当运行时有错误出现
19.关键字()表明一个对象或变量在初始化后不能修改。
Aextends
Bfinal
Cthis
Dfinalizer
20.声明为static的方法不能访问()类成员。
A超类
B子类
C非static
D用户自定义类
类的封装练习
一、判断题
1.在子类中可以用完全相同的signature重新定义一个超类方法,这称为方法的覆盖
(override)。
()
2.final修饰的方法是不能被子类覆盖的,只能被重载。
()
3.声明为final的类不能是超类。
()
4.当一个超类成员不适合该子类时,子类会以恰当的方式重新定义它。
()
5.对子类实例化对象需要调用超类的构造函数进行初始化工作,完成对子类中的超类实例变量的初始化,则子类可以继承超类的构造函数。
()
6.在类的定义中如果不明确给出超类,那么默认超类就是Object类。
()
7.protected类型的实例变量或方法只能由声明该变量或方法的类本身及其子类访问。
()
8.Java的每个子类的构造函数都要显式的调用它的直接超类的构造函数。
()
9.超类对象的集合通常比它的任何一个子类对象集合大。
()
10.子类可以从多个超类中派生出来。
()
二、选择题
1.为了区分重载多态中同名的不同方法,要求:
()
A参数名不同
B返回值类型不同
C采用不同的形式参数列表
D选项ABC都对
2.在某个类中定义一个方法:
voidGetSort(intx),以下关于能否作为这个方法的重载错
误的是:
()
AvoidGetSort(floatx){x*=x;}
BintGetSort(doubley){return(int)(2*y);}
CdoubleGetSort(intx,inty){returnx+y;}
D都不能
3.下列对继承的说法,哪个是正确的:
()
A子类只能继承父类public方法和状态
B子类能继承父类的非私有方法和状态
C子类能继承父类的所有方法和状态
D子类只能继承父类的方法,而不继承状态
4.定义类A如下:
classA
{inta,b,c;
publicvoidB(intx,inty,intz){a=x;b=y;c=z;}
}
下面对方法B()的重载哪些是正确的:
()
ApublicvoidA(intxl,intyl,intz1){a=x;b=y;c=z;}
BpublicvoidB(intx1,intyl,intz1){a=x;b=y;c=z;}
CpublicvoidB(intx,inty){a=x;b=y;c=0;}
DpublicB(intx,inty,intz){a=x;b=y;c=z;}
5.下列程序的结果输出为:
()
classStrange{
intj;
Strange(){
this(4);
}
Strange(intj){
this.j=j;
}
}
classMainStrange{
publicstaticvoidmain(string[]args){
Strangefunny=newStrange();
System.out.println(“j=“+funny.j);
}
}
Aj=2
Bj=4
Cj=6
Dj=7
6.下列说法正确的是:
()
AJava中允许一个子类有多个父类
B某个类是一个类的子类,它仍有可能成为另一个类的父类
C一个父类只能有一个子类
D继承关系最多不能超过4层
7.下列说法正确的是:
()
A子类只能覆盖父类的方法,而不能重载
B子类只能重载父类的方法,而不能覆盖
C子类不能定义和父类同名同形参的方法,否则,系统将不知道使用哪个方法。
D重载就是一个类中有多个同名但不同形参和方法体的方法
8.关于构造函数的说法正确的是:
()
A一个类只能有一个构造函数
B一个类可以有多个不同名的构造函数
C构造函数与类同名
D构造函数必须自己定义,不能使用父类的所有构造函数
9.下面是有关子类调用父类构造函数的描述正确的是:
()
A子类定义了自己的构造函数,就不会调用父类的构造函数
B子类必须通过super关键字调用父类有参数的构造函数
C如果子类的构造没有通过super调用父类构造函数,那么子类会先调用子类自己的构造函数,再调用父类不含参数的构造函数。
D创建子类的对象时,先调用子类自己的构造函数,然后调用父类的构造函数
10.构造方法何时被调用?
()
A类定义时
B使用对象的变量时
C调用对象方法时
D创建对象时
11.如果超类不允许其通过继承的方式产生的子类访问它的某些成员,那么它必须以什么方
式声明该成员。
()
Apublic
Bprivate
Crotected
Dstatic
12.声明为final的变量不能在子类中覆盖,声明为()和()的方法是隐式的final。
()
Apublicprivate
Bprivateprotected
Cprotectedstatic
Dstaticprivate
13.继承性使▁▁成为可能,它不仅节省开发时间,而且也鼓励人们使用已经验证无误和调
试过的高质量软件。
()
A节省时间
B软件复用
C软件管理
D延长软件生命周期
14.编译运行下面的程序,结果是()。
PublicclassA
{
publicstaticvoidmain(String[]args)
{
Bb=newB();
b.test();
}
voidtest()
{
System.out.print(“A”);
}
}
classBextendsA
{
27voidtest()
{
super.test();
System.out.println(“B”);
}
}
A产生编译错误
B代码可以编译运行,并输出结果:
AB
C代码可以编译运行,但没有输出
D编译没有错误,但会产生运行时异常
15.已知类关系如下:
classEmployee;
classManagerextendsEmployeer;
classDirectorextendsEmployee;
则以下语句正确的是:
()
AEmployeee=newManager();
BDirectord=newManager();
CDirectord=newEmployee();
DManagerm=newDirector();
16.一个▁▁类的对象可以当作相应的▁▁类对象看待。
()
A子系统
B用户系统
C子超
D超用户
17.哪个方法是对如下方法的重载?
()
publicvoidexample(){...}
Apublicvoidexample(intm){...}
Bpublicintexample(){...}
Cpublicvoidexample2(){...}
Dpublicintexample(intm,floatf){...}
18、被声明为private,protected及public的类成员,在类外部:
()
A只能访问到声明为public的成员
B只可能访问到声明为protected和public的成员
C都可以访问
D都不能访问
19、现有两个类A、B,以下描述中表示B继承自A的是()
AclassAextendsB
BclassBimplementsA
28CclassAimplements
DclassBextendsA
20、设类B是类C的父类,下列声明对象x1的语句中不正确的是()
ACx1=newB();
BBx1=newC();
CCx1=newC();
DBxl=newB();
三、简述题
1.方法的重载和覆盖有什么区别?
2.简述超类和子类的关系。
3.在方法体中可以使用this和super关键字,其意义是什么,在什么情况下使用?
4.试分清“是一个”关系和“有一个”关系。
5.调用构造方法遵循什么规则?
6.要使一个类的多个对象具有不同的初始状态,应如何实现?
接口和基本类库练习题
一、判断题
1.Java中的类和接口都只支持单重继承。
()
2.由于Java中类只支持单重继承,所以一个类只能继承一个抽象类和实现一个接口。
()
3.内部类始终可以访问外部类。
()
4.对于一个抽象类,改变它的属性和方法一定会改变它所有子类的属性和方法。
()
5.一个类可以实现抽象类的所有方法,也可以只实现部分方法,但实现部分方法的类仍然是一个抽象类。
()
6.在实现接口的时候,要实现所有方法。
()
7.接口其实是一个特殊的abstractclass。
()
8.一个接口不可以继承其他接口。
()
二、选择题
1.下面有关接口的说法,哪个是正确的?
()
A接口与抽象类是相同的概念
B一个类不可实现多个接口
C接口之间不能有继承关系
D实现一个接口必须实现接口的所有方法
2、在使用interface声明一个接口时,可以使用()修饰符修饰该接口。
Aprivate
Bprotected
Cprivateorprotected
Dpublic
3.下列哪个不是属于接口用途的?
()
A通过接口可以实现不相关类的相同行为
B通过接口可以指明多个类需要实现的方法
C通过接口可以了解对象的交互界面
D通过接口可以了解对象所对应的类
5.虽然接口和抽象类不能创建对象,但它们的对象引用仍可指向该类型的对象。
这种说法
()
A正确
B不正确
C不能确定
D接口和抽象类不能说明其对象引用
6.下面哪个类包括drawImage()方法、drawString()方法和setColor()方法。
()
Ajava.awt.Applet
Bjava.awt.Image
Cjava.awt.Graphics
Djava.util.Date
7.接口中说明了一组公共的抽象方法,其中是否包含公共的静态方法?
答案是()
A可以
B不可以
C不能肯定
D因静态方法不能被改写,故不能出现在接口中
8.接口是Java面向对象的实现机制之一,以下说法正确的是:
()
AJava支持多重继承,一个类可以实现多个接口
BJava只支持单重继承,一个类可以实现多个接口
CJava只支持单重继承,一个类只可以实现一个接口
DJava支持多重继承,但一个类只可以实现一个接口
9.关于接口的定义和实现,以下描述正确的是:
()
A接口定义中的方法都只有定义没有实现
B接口定义中的变量都必须写明final和static
C如果一个接口由多个类来实现,则这些类在实现该接口中的方法时应采用统一的代码
D如果一个类实现一个接口,则必须实现该接口中的所有方法,但方法未必声明为public
11.声明接口的保留字是()
Ainterface
Bprotect
Cfinal
Dstatic
13.下面的接口(类)定义正确的是:
()
A
publicclassA
{
privateintx;
publicgetx()
{returnx;}
}
B
publicabstractclassA
32{
privateintx;
publicabstractintgetx();
publicintamethod()
{return0;}
}
C
publicclassA
{
privateintx;
publicabstractintgetx();
}
D
publicinterfaceInterfacea
{
privateintx;
publicintgetx()
{returnx;}
}
14.接口具有下面的特性。
()
A多重继承
B不可继承
C抽象性
D嵌套
15.定义一个包的关键字是()。
Aimport
Bpackage
Cinterface
Dprotected
16.下列选项中,用于在程序开头引入包的关键字是()。
Aimport
Bimplements
Cinteger
Dprotected
17.以下语句输出的结果是()。
System.out.println(Math.floor(-0.8));
A0
B-1
33C-0.8
D0.8
18.下面的程序段执行后,变量a、b、c的值分别是()。
inta,b,c;
a=(int)Math.round(-4.51);
b=(int)Math.ceil(-4.51);
c=(int)Math.floor(-4.1);
A-5,-4,-5
B-4,-4,-5
C-5,-5,-5
D-4,-4,-4
19.下面()说法不正确。
A如果某公共的接口被声明在一个源文件中,则接口必须与源文件具有相同的名字
B如果源文件包含import语句,则该语句必须是除空行和注释行外的第一个语句行
C如果某源文件包含package语句,则该语句必须是第一个非空、非注释行
D接口中的方法不一定是抽象方法,所以可以不用关键字abstract修饰