目录
一、选择题
1.下列选项中关于Java中super关键字的说法正确的是()
A super关键字是在子类对象内部指代其父类对象的引用
B super关键字不仅可以指代子类的直接父类,还可以直接指代父类的父类
C 子类通过super关键字只能调用父类的方法,而不能调用父类的属性
D 子类通过super关键字只能调用父类的属性,而不能调用父类的方法
super关键字是在子类对象内部指代其父类对象的引用,子类通过super关键字可以调用父类的方法和属性,super关键字只能指代直接父类,不能指代父类的父类。
所以正确答案是 A
2.A派生出子类B,B派生出子类C,并且在java源代码中有如下声明: 以下哪个说法是正确的?
A a0=new A();
A a1=new B();
A a2=new C();
A 第1行,第2行和第3行的声明都是正确的
B 第1,2,3行都能通过编译,但第2,3行运行时出错
C 第1,2行能通过编译,但第3行编译出错
D 只有第1行能通过编译
在派生关系中,A派生B,B派生C,B和C都可以利用A类对象创造实例。
所以正确答案是 A
3.以下说法错误的是()
A 数组是一个对象
B 数组不是一种原生类
C 数组的大小可以任意改变
D 在Java中,数组存储在堆中连续内存空间里
数组就是一个对象,不是一种原生类,数组的大小长度是固定的不能改变。数组存储是在堆中的连续内存空间里。
所以正确答案是 C
4.Test.main() 函数执行后的输出是()
public class Test {
public static void main(String [] args){
System.out.println(new B().getValue());
}
static class A{
protected int value;
public A(int v) {
setValue(v);
}
public void setValue(int value){
this.value = value;
}
public int getValue(){
try{
value++;
return value;
} catch(Exception e){
System.out.println(e.toString());
} finally {
this.setValue(value);
System.out.println(value);
}
return value;
}
}
static class B extends A{
public B() {
super(5);
setValue(getValue() -