面向对象原理与Java实践复习题集(1)
一、单项选择题(请将所选择的答案号码填写在每小题中的圆括号内)
1、final关键字不可以用来修饰( D )。
A.类 B.成员方法 C.成员变量 D.接口
一、final关键字可以用来修饰类、方法、变量。各有不同。
A、修饰类(class)。
1、该类不能被继承。
2、类中的方法不会被覆盖,因此默认都是final的。
3、用途:设计类时,如果该类不需要有子类,不必要被扩展,类的实现细节不允许被改变,那么就设计成final类
B、修饰方法(method)
1、该方法可以被继承,但是不能被覆盖。
2、用途:一个类不允许子类覆盖该方法,则用final来修饰
3、好处:可以防止继承它的子类修改该方法的意义和实现;更为高效,编译器在遇到调用fianal方法转入内嵌机制,提高了执行效率。
4、注意:父类中的private成员方法不能被子类覆盖,因此,private方法默认是final型的(可以查看编译后的class文件)
C、修饰变量(variable)
1、用final修饰后变为常量。包括静态变量、实例变量和局部变量这三种。
2、特点:可以先声明,不给初值,这种叫做final空白。但是使用前必须被初始化。一旦被赋值,将不能再被改变。
D、修饰参数(arguments)
1、用final修饰参数时,可以读取该参数,但是不能对其作出修改
二、final关键字不能用来抽象类和接口。
2、下面关于变量的说法,不正确的是( B )。
A.实例变量是类的成员变量
B.实例变量用关键字static声明
C.在方法中定义的局部变量在该方法被执行时创建
D.局部变量在使用前必须被初始化
在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。类的每个对象维护它自己的一份实例变量的副本。
3、Java实现动态多态性是通过( B )实现的。
A.重载 B.覆盖 C.接口 D.抽象类(动物,懂?)
静态多态性指的是程序在编译时,系统就能决定调用哪个函数,如重载。
动态多态性指在运行中才能动态确定操作指针所指的对象,主要通过虚函数和重写来实现。
java 的多态机制遵循一个原则:当父类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法
概念理解起来有点抽象。还是看个例子吧。
静态多态性:
add(double a);
add(double a,double b);
动态多态性
public class A{ }
public class AB extends A{ }
public class AC extends A{ }
简单来说,静态多态性就是指方法的重载,是在一个类中的行为。
动态多态性是指方法的重写,即多态,是在有继承关系的两个或两个以上的类中的行为。
4、下列关于重载方法描述正确的是( A )。
A.重载方法的形式参数(类型、参数个数或参数顺序)必须不同
B.重载方法的参数名称必须不同
C.重载方法的返回值类型必须不同
D.重载方法的修饰词必须不同
5、下列说法正确的是( C )。
A.子类不能定义和父类同名同参数的方法
B.子类只能继承父类的方法,而不能重载
C.重载就是一个类中有多个同名但有不同形参(类型、参数个数或参数顺序)和方法体的方法
D.子类只能覆盖父类的方法,而不能继承
重写(Override)
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!
重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。
在面向对象原则里,重写意味着可以重写任何现有方法。
重载(Overload)
重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
最常用的地方就是构造器的重载。
6、类Teacher和Student都是类Person的子类,t、s、p分别是上述三个类的非空引用变量,关于以下语句说法正确的是( C )。
if ( t instanceof Person ) { // instanceof判断其左边对象是否为其右边类的实例
s = (Student) t ;
}
A.将构造一个Student对象 B.表达式合法
C.编译时非法 D.编译时合法而在运行时可能非法
Cannot cast from Bird to Fish
7、已知MyInterface是一个接口,ClassA是实现了MyInterface的一个类,ClassB是ClassA的子类,,是下列语句正确的是( mkdirs方法B )。
A.ClassB obj = new ClassA();
B.MyInterface obj = new ClassB;
C.ClassA obj = new MyInterface();
D.MyInterface obj = new MyInterface();
8、设有一个类的代码如下:
class outer {
public class Inner1 { }
public static class Inner2 { }
}
则在另一个类的代码中,下列语句正确的是( B )。
A.Outer.Inner1 obj = new Outter.Inner1();
B.Outer.Inner2 obj = new Outer.Inner2();
C.Outer.Inner1 obj = new Outer.Inner1().new Inner1();
D.Outer.Inner2 obj = new Outer().new Inner2();
9、以下关于泛型的说法错误的是( D )。
A.泛型是通过类型参数来提高代码利用性的一种技术
B.通过在类名后增加类型参数可以定义具有泛型特点的类
C.通过在接口名后增加类型参数可以定义具有泛型特点的接口
D.一个泛型类只能有一个类型参数 (在泛型中,可以声明一个以上的类型参数,只需要在这些类型参数之间用逗号隔开)
10、关于下面的程序,结论正确的是( C )。
public class Test {
public static void main(String[] args){
int[] a = new int[5];
a.length = 10;
System.out.println(a.length);
}
A.程序可以通过编译并正常运行,结果输出10
B.程序可以通过编译并正常运行,结果输出5
C.程序无法通过编译 // The final field array.length cannot be assigned
D.程序可以通过编译但无法正常运行
11、使用( B )表达式能产生[20, 999]之间的随机整数。
A.(int)(20+Math.random()*979)
B.20+(int)(Math.random()*980)
C.(int)Math.random()*999
D.20+(int)Math.random()*980
12、下面关于set集合处理重复元素的说法正确的是( B )。
A.如果加入一个重复元素,将抛出异常
B.如果加入一个重复元素,add()方法将返回false
boolean | add(E e) 如果此 set 中尚未包含指定元素,则添加指定元素。 |
C.集合通过调用equals()方法可以返回包含重复值的元素
D.添加重复值将导致编译出错
13、关于异常处理的语法try–catch–finally的描述正确的是( A )。
A.try–catch必须配对
B.try可以单独使用
C.try–finally必须配对使用
D.try–catch后如果定义了finally,则finally一般都会被执行
14、下列( D )不是File类的功能。
A.创建文件 B.创建目录 C.删除文件
boolean | mkdir() 创建此抽象路径名指定的目录。 |
boolean | mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。 |
boolean | delete() 删除此抽象路径名表示的文件或目录。 |
D.复制文件
15、用“new FileOutputStream("", true)”创建一个FileOutputStream的实例对象,则下列( C )说法是错误的。
A.如果文件不存在,也不一定会抛出IOException异常
B.如果文件不存在,则可能会新建文件
C.如果文件存在,则将覆盖掉文件中原有的内容
D.如果文件存在,则从文件的末尾开始添加新内容
16、下列说法正确的是( B )。
A.BorderLayout是面板的默认布局管理器
Frame是框架,这个是要实现的功能界面的布局,默认管理器“BorderLayout”。 2、Panel是面板,这个是要实现的某个功能模块的具体实现,默认管理器“FlowLayout“。 FlowLayout是Pane和Applet默认的布局管理器,
B.当鼠标指针位于一个GUI组件的边上时,会发生一个MouseMotionEvent事件
C.一个面板(JPanel)不能被加入到另一个面板(JPanel)中 //可以
D.在BorderLayout中,添加到NORTH区的两个按钮将并排显示 //覆盖
17、关于Java的事件处理机制,下列说法正确的是( B )。
A.每一个组件都可以发生任意类型的事件
B.事件处理机制有三个要素:事件源、和处理事件的接口
Java 提供的事件处理模型是一种人机交互模型。它有三个基本要素:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论