面向对象基础复习资料.docx
- 文档编号:25685865
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:20
- 大小:33.22KB
面向对象基础复习资料.docx
《面向对象基础复习资料.docx》由会员分享,可在线阅读,更多相关《面向对象基础复习资料.docx(20页珍藏版)》请在冰豆网上搜索。
面向对象基础复习资料
选择题(每题2分*10题,20%)
C.
protectedprivatenumber;
D.publicabstractclassCar{
2.在Java中,用Package语句说明一个包时,该包的层次结构必须是
(B)。
A.与文件的结构相同
B.与文件目录的层次相同
C•与文件类型相同
D.与文件大小相同
3.在Java中,能实现多重继承效果的方式是(C)。
A.内部类B.适配器
C•接口D.同步
4.一个类中有公共的double型成员变量PI,该值保持为常数3.14,则定义这个成员变量的语句是(D)。
A.publicdoublePI=3.14;
B.finaldoublePI=3.14;
C.publicconstdoublePI=3.14;
D.publicfinaldoublePI=3.14;
5.在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数个数、类型或顺序各不相同,传回的值也可以不相同。
这种面向对象程序的特性称为(C)。
A.隐藏B.覆盖
C.重载D.Java不支持此特性
6.关于对象成员占用内存的说法中(B)是正确的。
A.同一个类的对象共用同一段内存
B.同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间C•对象的方法不占用内存
D.以上都不对
7.以下说法正确的是(C)。
A.抽象方法可以有方法体
B.抽象方法可以出现在非抽象类中
C.抽象方法是没有方法体的方法
D.抽象类中的方法都是抽象方法
8.关于继承的说法正确的是(B)。
A.子类将继承父类所有的属性和方法。
B.子类将继承父类的非私有属性和方法。
C.子类只继承父类public方法和属性
D.子类只继承父类的方法,而不继承属性
9.关于构造函数的说法(C)是正确的。
A.一个类只能有一个构造函数
B.一个类可以有多个不同名的构造函数
C.构造函数与类同名
D.构造函数必须自己定义,不能使用父类的构造函数
10.覆盖与重载的关系是(A)。
A.覆盖只有发生在父类与子类之间,而重载发生在同一个类中
B.覆盖方法可以不同名,而重载方法必须同名
C.final修饰的方法可以被覆盖,但不能被重载
D.覆盖与重载是同一回事
11.以下关于继承的叙述正确的是(A)。
A.在Java中类只允许单一继承
B.在Java中一个类只能实现一个接口
C.在Java中一个类不能继承一个类的同时实现一个接口
D.在Java中接口只允许单一继承
12.能与abstract关键字一同修饰类或方法的关键字有(A)
A.publicB.static
C.finalD.private
13.定义一个接口必须使用的关键字是(C)。
A.publicB.class
C.interfaceD.static
14.声明并创建一个按钮对象b,应该使用的语句是(A)。
A.Buttonb=newButton();
B.buttonb=newbutton();
C.Buttonb=newb();
D.b.setLabel(“确定”);
15.符合对象和类的关系的是(D)。
A.教师和学生B.书和房子
C.狗和猫D.飞机和交通工具
16.在Java中下列说法正确的是(C)。
A.—个子类可以有多个父类,一个父类也可以有多个子类
B.—个子类可以有多个父类,但一个父类只可以有一个子类
C.一个子类可以有一个父类,但一个父类可以有多个子类
D.上述说法都不对
17.关于类的构造方法的叙述不正确的是(B)。
A.构造方法可以有参数
B.一个类只能有一个构造方法
C.构造方法没有返回值的类型
D.构造方法的名称必须与类名相同
18.关于this关键字,以下说法不正确的是(C)。
A.this是对对象自身的调用,使用this.属性名可以直接调用对象本身的属性
B.使用this关键字可以处理方法中的局部变量与参数重名的情况
C.在static方法中可以使用this关键字访问相关的属性或方法
D.当必须指出当前使用方法的对象是谁时,要使用this关键字
19.Stringa=newString("Computer");
Stringb=newString("Computer");
若想判断a对象与b对象的值是否相等,应采用(B)方法
A.a==bB.a.equals(b)
C.a=bD.a.equals=b
20.给定代码:
1interfaceFoo{
2intk=0;
3}
4
5publicclassTestimplementsFoo{
6publicstaticvoidmain(String[]args){
7inti;
8Testtest=newTest();
9i=test.k;
10i=Test.k;
11i=Foo.k;
12}
13}编译运行如上代码,结果为(A)
A.编译通过
B.提示第9行编译错误
C.提示第10行编译错误
D.提示第11行编译错误
21.需要监控错误的代码写在(
)块中。
A.try
B.catch
C.finally
D.以上都不正确
22.假设i,j为类A中定义的int型的成员变量,下列X类的构造方法中不正确的是(A)
A.voidA(intk){i=k;}
B.A(intk){i=k;}
C.voidA(intm,intn){i=m;j=n;}
D.A(){i=0;j=0;}
23.用来导入已经定义好的类或包的语句是(A)
A.import
B.interface
C.implements
D.package
24.为了调用父类的构造方法,可以使用(C)关键字后跟包含该父类所需参数的一对圆括号。
A.superclass
B.superconstructor
C.super
D.以上都不正确
25.下列关于抽象类的说法中,正确的是(B)
A.抽象类可以继承非抽象类
B.抽象类不能实例化对象
C.抽象类必须包含抽象方法
D.继承抽象类的子类必须实现父类中的抽象方法
26.下列关于final的说法中,正确的是(C)
A.final修饰的类可以被继承
B.final修饰的方法不能被子类继承
C.final修饰的成员变量一旦初始化,就不能修改
D.final修饰的方法,在子类中可以被重写
27.以下关于继承中的构造方法的描述中,正确的是(B)
A.子类只能继承父类中的构造方法,但不能定义自己的构造方法
B.子类和父类均可以独自定义自己的构造方法,但执行的顺序有规定
C.如果父类定义了构造方法,子类继承父类时必须重写父类的构造方法
D.子类可以定义自己的构造方法,但受父类定义的构造方法的限制
28.关于类和对象的叙述不正确的是(B)
A.对象是类的一个实例
B.一个类只能有一个对象
C.任何一个对象都属于一个具体的类
D.类与对象的关系和数据类型与变量的关系相似
29.现有两个类AB,以下描述中表示B继承自A的是(C)
A.classAextendsB
B.classAimplementsB
C.classBextendsA
D.classBimplementsA
30.若一个类中,对某个方法进行重载,能够区分这些重载方法的手段是
()
A.他们的返回值类型不同
B.他们的方法名不同
C.他们的参数列表不同
D.他们的访问权限修饰符不同
二、填空题(每空1分*15空,15%)
1.抽象方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。
2.用关键字final修饰的方法是不能被当前类的子类重新定义的方法。
3.在Java程序中,通过类的定义只能实现单重继承,但通过接口的定义可以实现多继承关系。
4.子类重新定义了父类中的同名成员变量,这种现象称为属性隐藏,子类重新定义了父类中的同名成员方法,称为方法重写。
5.对象声明的一般格式为类名对象名。
6.通过类MyClass中的不含参数的构造方法,生成该类的一个对象obj,实现的语句为:
MyClassobj=newMyClass();
7.Java语言中,用来分配内存的运算符是new。
8.Java中的Object类是最顶层的类,所有其他的类都是它直接或间接的子类。
9.创建一个名为MyPackage的包的语句是packageMyPackage;,该语句应该放在程序的位置为第一行。
10.Java中类成员的限定词有以下几种:
private,public,protected和缺省。
11.Java类中关键字static修饰的变量叫做类变量。
12.线程在生命期中要经历5种状态,分别是新建状态、可运行状态、运行状态、阻塞状态和死亡状态。
13.多线程是Java程序的并发机制,它能同步共享数据,处理不同事件。
14.Java中this指当前对象。
15.局部变量的名字与成员变量的名字相同,若想在该方法内使用成员变量,必须使用关键字this。
16.我们在Java程序中,把关键字super加到方法名称的前面,来实现子
类调用父类的方法。
17.面向对象的计算机语言一般应具有3个基本特性,分别是封装、继承、多态。
18.访问权限是private的变量,只能在本类中使用,不能在类外使用和访问。
19.任何一个Java程序都默认引入一个包,这个包的名字是java.lang。
20.接口是一种只含有抽象方法或常量的一种特殊抽象类。
21.接口中所有属性的修饰符为public、static和final。
22.Throwable是Exception类的直接父类。
23.局部变量定义在类中某一方法的内部,其作用范围为该变量定义的地方开始,至所属方法结束的地方为止。
24.静态方法中不能访问非静态成员
25.父类对象通过子类对象去实例化,实际上就是对象的向上转型,这种转型不需要进行强制类型转换,可以自动完成。
但是会丢失精度。
26.方法的重载指同一个类中多个方法可以使用相同的名字,但是参数的数量或类型必须不完全相同。
方法的重载是Java实现多态性的一种方式。
27.异常是程序编译或运行期间所发生的不正常事件。
28.如果一个接口定义了一个方法methodA()和methodB(),那么一个类实现该借口,至少有2个方法。
29.实现Runnable()接口就必须实现run方法。
30.try语句后面可以跟一个或多个catch语句和0~1个finally语句。
31.所谓封装性就是将一组数据和与这组数据相关的操作组装在一起。
读程序,程序填空
1.
publicclassTest{
staticdoublepi=3.14;
intradius=100;
publicstaticvoidmain(String[]args){
System.out.println(Test.pi);//打印pi
Testt=newTest();_
System.out.println(t.radius);//打印radius
}
}
2.
classTigerextendsCat{
publicvoidshow(){
System.out.println("Tiger");
}
}
publicclassCat{
Stringname;
publicvoidshow(){
System.out.printing"Cat");
}
publicstaticvoidmain(String[]args){
Catc=newTiger();
c.show();//输出结果为Tiger
}
3.
classA{
Stringstr1="Hello!
";
Stringstr2="Howareyou?
";
publicStringtoString(){
returnstr1+str2;
}
}
classBextendsA{
Stringstr1="Marry.";
publicStringtoString(){
returnsuper.str1+str1;
}
}
publicclassTest5{
publicstaticvoidmain(String[]args){Bb=newB();
//输出Hello!
Marry.
System.out.println(b.toString());
}
}
publicclassTest{
publicstaticvoidmain(String[]args){
try{sayHello();
}catch(ArrayIndexOutOfBoundsExceptione){System.out.println("数组索引越界异常");
}catch(Exceptione){
System.out.println("异常");
}finally{
System.out.println("释放资源");
}
System.out.println("结束");
}
publicstaticvoidsayHello(){
System.out.println("HelloWorld!
");
int[]arr=newint[5];arr[3]=10;
}
}
5.
classBase{
inti;
Base(){
add
(1);
}
voidadd(intv)
i+=v;
}
voidprint(){
System.out.println(i);
}
}
classExtensionextendsBase{
Extension(){
add
(2);
}
voidadd(intv){
i+=v*2;
}
}
publicclassTest{
publicstaticvoidmain(String[]args){bogo(newExtension());
}
staticvoidbogo(Baseb)
{
System.out.println(b.i);
b.add(8);
b.print();
6.
classDemo{
publicvoidtest(){
System.out.println("NO");
}
publicvoidtest(inti){
System.out.println(i);
}
publicvoidtest(inti,intj){
System.out.println(i+j);
}
}
publicclassTest{
publicstaticvoidmain(String[]args){Demod=newDemo();d.test();
d.test(5);
d.test(6,8);
}
}
7.
classA{
Strings="classA";
voidshow(){
System.out.println("s:
"+s);
}
}
classBextendsA{
Strings="classB";
voidshow(){
System.out.println("s:
"+s);
}
}
publicclassTest{
publicstaticvoidmain(String[]args){Aa=newB();
System.out.println(a.s);a.show();
}
}
8.
abstractclassAbstractBase{
publicAbstractBase(){print();
}
publicabstractvoidprint();
}
classSubextendsAbstractBase{
inti=4;
publicSub(){
System.out.println(i);
}
publicvoidprint(){
System.out.println("i:
"+i);
}
}
publicclassTest2{
publicstaticvoidmain(String[]args){newSub().print();
}
}
9.
interfaceA{
Stringa="接口A中的变量";
voidshowA();
}
interfaceBextendsA{
Stringb="接口B中的变量";
voidshowB();
}
interfaceCextendsB{
Stringc="接口C中的变量";
voidshowC();
}
classABCImplimplementsC{
publicvoidshowA(){
System.out.println(a);
}
publicvoidshowB(){
System.out.println(b);
}
publicvoidshowC(){
System.out.println(c);
}
}
publicclassTest3{
publicstaticvoidmain(String[]args){ABCImpla=newABCImpl();a.showA();a.showB();
a.showC();
}
}
10.
classBextendsA{
intm;
publicB(inti,intj,intm){
super();
this.m=m;
}
publicvoidprint(){
System.out.println("i="+i+",m="+m);
}classA{
inti,j;
publicA(){
this.i=0;
this.j=0;
}
publicvoidprint(){
System.out.println("i="+i+",j="+j);
}
}
publicclassTest{
publicstaticvoidmain(String[]args){Aa=newA();
Bb=newB(1,2,3);
a.print();
b.print();
}
}
11.
classBextendsA{
intm;
publicB(inti,intj,intm){
super();
this.m=m;
}
publicvoidprint(){
System.out.println("i="+i+",m="+m);
}
}
classA{
inti,j;
publicA(){
this.i=0;
this.j=0;
}
publicvoidprint(){
System.out.println("i="+i+",j="+j);
}
}
publicclassTest{
publicstaticvoidmain(String[]args){
Aa=newA();
Bb=newB(1,2,3);
a.print();
b.print();
}
父类变量";
12.classBase{
Stringvar=staticStringsVar="父类静态变量";voidmethod(){
System.out.println("父类方法");
}
staticvoidsMethod(){
System.out.println("父类静态方法");
classSubextendsBase{
Stringvar="子类变量";
staticStringsVar="子类静态变量";
voidmethod(){
System.out.println("子类方法");
}
staticvoidsMethod(){
System.out.println("子类静态方法");
}
}
publicclassStaticDemo{
publicstaticvoidmain(String[]args){Baseb=newSub();
System.out.println("b.var="+b.var);
System.out.println("b.sVar="+b.sVar);
b.method();
b.sMethod();
}
四.编程题
1.定义一个日期类MyDate,具有私有成员变量:
year、month、day,以及相应的get/set方法等、print(打印日期对象的年月日信息)。
定义一个学生类Student,要求其包含name(String类型,保存姓名)、birthday
(MyDate类型,保存生日)以及成员方法set、get等、print(打印对象信息)。
在main方法,要求方法中通过“Students1=newStudent();”新建姓名为"张三"、生日为1996年1月1日的对象,再通过类似“Students2=newStudent("李四",2016,5,7);”的方法创建学生对象,分别打印s1同s2的信息。
2.平面上的一个点包含x和y两个坐标,而空间上的一个点包含x、y、z三个坐标,请设计程序,结合继承与super关键字的用法,提供描述平面上的一个点和空间上的一个点的方法,并测试。
3.Shape是一个接口,应该包含一个计算图形面积的方法area()。
Circle类及
Rectangle类实现接口Shape.编写程序并进行测试。
4.声明一个Compare类,放在包pack1中,有三个成员变量num1num2num3使用构造方法
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 基础 复习资料