一.单选题
1.final修饰符不可以修饰如下哪个内容(B)
A、类
B、接口
C、方法
D、变量

答案解析:final关键字可用于修饰类、变量和方法。

2.下列选项中,关于final修饰成员变量的说法正确的是(B )
A、被final修饰的成员变量可以被多次赋值
B、被final修饰的成员变量为常量
C、final只能在接口中修饰成员变量
D、以上都不对

答案解析:被final修饰的变量为常量,不能被第二次赋值或改变引用。

3.下列关于super关键字的说法中,正确的是(A )
A、super关键字是在子类对象内部指代其父类对象的引用
B、super关键字不仅可以指代子类的直接父类,还可以指代父类的父类
C、子类通过super关键字只能调用父类的方法,而不能调用父类的属性
D、子类通过super关键字只能调用父类的属性,而不能调用父类的方法

答案解析:super关键字是在子类对象内部指代其父类对象的引用,通过super关键字既能调用父类的属性,又能调用父类的方法。

4.以下关于继承的描述,说法正确的是(C )
A、子类继承父类的所有属性和方法
B、子类可以继承父类的私有的属性和方法
C、子类可以继承父类的公有的属性和方法
D、创建子类对象时,父类的所有构造方法都会被执行

答案解析:子类可以继承父类的非私有成员,并且在创建子类时默认会调用父类的无参构造方法。

5.下面哪个修饰符不可以修饰接口中的成员变量(D)
A、public
B、static
C、final
D、private

答案解析:接口中的成员变量其实是一个常量,用public static final修饰,所以,用private修饰是错误的
6.已知类的继承关系如下:
class A
class B extends A
class C extends A
则以下语句能通过编译的是(A )
A、A a=new B();
B、C c=new B();
C、C c=new A();
D、B b=new C();

答案解析:假设A为犬类,B为狗,C为狼,那么狗当然属于犬类对象。

7.在下面哪种情况下,可以使用方法重写( C)
A、父类方法中的形参不适用于子类使用时
B、父类中的方法在子类中没有时
C、父类的功能无法满足子类的需求时
D、父类方法中的返回值类型不适合子类使用

答案解析:父类的功能无法满足子类的需求时,这时候可以使用方法的重写。

8.一个具体类实现接口时,需要重写接口中的©
A、成员变量
B、局部变量
C、成员方法
D、构造方法

答案解析:接口中只有常量和抽象方法,所以类实现接口,要重写接口中的抽象方法也就是成员方法。

9.现有两个类A、B,以下描述中表示B继承自A的是(D)
A、class A extends B.class
B、class B implements A
C、class A implements B
D、class B extends A

答案解析:类的继承 关键字 extends,在Java中,类的继承是通过extends关键字表示的,要想描述B继承自A,则正确的写法是class B extends A。

10.下列关于接口的说法中,错误的是( D)
A、接口中定义的方法默认使用“public abstract”来修饰
B、接口中的变量默认使用“public static final”来修饰
C、接口中的所有方法都是抽象方法
D、接口中定义的变量可以被修改

答案解析:接口中定义的变量是常量,不能被修改。

11.下列关于自定义异常的说法中,错误的是(D )
A、自定义异常要继承Exception类
B、自定义异常继承Exception类后,具有可抛性
C、自定义异常可以在构造方法中用super关键字传递异常信息给父类
D、自定义异常必须继承Error类

答案解析:自定义异常的特点。

12.如果类的成员被(A )访问控制符来修饰,则这个成员只能被该类的其它成员访问,其它类无法直接访问。
A、private
B、default
C、protected
D、public

答案解析:如果类的成员被private访问控制符来修饰,则这个成员只能被该类的其它成员访问,其它类无法直接访问。类的良好封装就是通过private关键字来实现的。

13.以下对于try…catch语句描述正确的是(C )
A、try…catch语句处理程序中的错误
B、try…catch语句处理程序中的bug
C、try…catch语句处理程序中的异常
D、以上说法都不正确

答案解析:try…catch语句处理程序中的异常。

14.下面程序的运行结果是( A)
public class Demo {
public static void main(String[] args) {
try {
System.out.println(10 / 0);
} catch (RuntimeException e) {
System.out.println(“RuntimeException”);
} catch (ArithmeticException e) {
System.out.println(“ArithmeticException”);
}
}
}
A、编译失败
B、编译通过,没有结果输出
C、输出:RuntimeException
D、输出:ArithmeticException

答案解析:在用try…catch处理异常的时候,子类异常一定要先catch,父类异常最后catch。

15.下面程序的运行结果是(D )
public class Demo {
public static void main(String[] args) {
try {
System.out.println(10 / 0);
System.out.println(“除法正常运行”);
} catch (ArithmeticException e) {
System.out.println(“除数不能为0”);
}
}
}
A、编译失败
B、编译通过,没有结果输出
C、输出:除法正常运行
D、输出:除数不能为0

答案解析:虽然是运行时期异常,但是也可以使用try…catch语句进行处理。一旦进入处理语句就不会再回去执行。

16.下列关于throws关键字的描述中,正确的是(C )
A、thorws可以声明在方法上也可以声明在方法体中
B、方法上使用throws抛出一个异常则这个方法中一定有trycatch代码块
C、使用throws抛出多个异常时各个异常之间必须使用逗号隔开
D、throws必须和throw配合使用

答案解析:throws关键字声明抛出异常的语法格式如下:
修饰符 返回值类型 方法名([参数1,参数2…])throws ExceptionType1[,ExceptionType2…]{
}

17.阅读下列的程序
public class Example {
public static void main(String[] args) {
new Father () {
public void show() {
System.out.println(“helloworld”);
}
}.show();
}
}
class Father {
public void show() {
System.out.println(“hellofather”);
}
}
下列选项中,程序的运行结果是(B )
A、hellofather
B、helloworld
C、编译报错
D、编译通过,运行报错

答案解析:匿名内部类对Father类中的show()方法进行了重写,程序调用的是匿名内部类中的show()方法。

18.下列程序运行结果是(B )

public class Demo {
 public static void main(String[] args) {
 Demo demo = new Demo();
 demo.show(new Car() {
 public void run() {
 System.out.println(“demo run”);
 }
 });
 }
 public void show(Car c) {
 c.run();
 }
 }
 abstract class Car {
 public void run() {
 System.out.println(“car run…”);
 }
 }


A、carrun
B、demorun
C、无结果
D、程序编译报错

答案解析:使用在show()方法中传入匿名内部类对象,匿名内部类中重写了父类Car中run()方法。

19.下列选项中,哪一个类是Object的子类(D)
A、publicfinalclassString{}
B、publicclassPerson{}
C、publicabstractAnimal{}
D、以上三个类都是Object子类

答案解析:所有类都是Object子类。

20.下列异常声明中,正确的是( C)
A、public void throws IOException fun(){}
B、public void fun throws IOException(){}
C、public void fun() throws IOException{}
D、public void fun() throws IOException,throws SQLException{}

答案解析:throws关键字需要写在方法声明的后面,throws后面需要声明方法中发生异常的类型,通常将这种做法称为方法声明抛出一个异常。

二.判断题
1.类只支持单继承,不允许多重继承,C类不可以既继承A类又B类。√

2.当一个类的方法被final关键字修饰后,这个类的子类将不能重写该方法。√

3.子类重写父类的方法时,重写的方法可以与父类被重写的方法名、参数列表以及返回值类型不相同。×

4.子类和父类对象在进行类型转换时,子类对象可以被视为父类的一个对象,父类对象不能被当作是某一个子类的对象。√

5.抽象类实现接口时,可以不实现接口中的任何方法。√

6.父类的引用指向自己子类的对象是多态的一种体现形式。√

7.instanceof关键字可以用于判断一个对象是否为某个类(或接口)的实例或者子类实例。√

8.抽象方法必须定义在抽象类中,所以抽象类中的方法都是抽象方法。×

9.如果一个类继承了一个抽象类,但是没有完全复写父类的所有的抽象方法那么这个类也必须是抽象类。√

10.运行时异常可以使用try…catch语句对异常进行捕获或者使用throws关键字声明抛出异常。√

11.JDK中定义了大量的异常类,这些异常类足够我们使用了,所以,我们不需要自己定义异常类。×

12.throws关键字用于对外声明方法可能发生的异常,这样调用者在调用方法时,可以明确知道该方法有异常,并进行相关处理。√

13.编译异常如果产生,可以处理,也可以不用处理。×

14.在try…catch语句中,try语句块存放可能发生异常的语句。√

15.如果一个方法要抛出多个异常,则需要使用多个throws进行抛出。×