1.Test.main() 函数执行后的输出是(D)
public class Test {
public static void main(String [] args){
System.out.println(new B().getValue());//17
}
static class A{
protected int value;
public A(int v) { // v = 5
setValue(v);//由于子类重写了父类的setValue方法,所以此处会调用子类的setValue方法
}
public void setValue(int value){ // 10 22
this.value = value;// value = 10 22 16
}
public int getValue(){
try{
value++;//value = 11 17
return value;//value = 11 17
} catch(Exception e){
System.out.println(e.toString());
} finally {
this.setValue(value);
System.out.println(value);//22 34
}
return value;
}
}
static class B extends A{
public B() {
super(5);//value = 10
setValue(getValue() - 3);//11-3=8
}
//这里B重写了A的setValue
public void setValue(int value){// 5 11 8 17
super.setValue(2 * value);//value = 10 22 16 34
}
}
}
A 11 17 34
B 22 74 74
C 6 7 7
D 22 34 17
注意:这道题涉及继承,重写,异常处理,内部类的使用,综合性比较强,可以通过自己调试来找到最后的输出结果
2. JUnit主要用来完成什么(D)
A 发送HTTP请求
B 建立TCP连接
C 集成测试
D 单元测试
JUnit主要用来完成单元测试
补充一个知识:数组不是原生类,它是通过基本类型来定义的;数组存储在堆中的连续空间内
3.下列选项中关于Java中super关键字的说法正确的是(A)
A super关键字是在子类对象内部指代其父类对象的引用
B super关键字不仅可以指代子类的直接父类方法,还可以直接指代父类的父类
C 子类通过super关键字只能调用父类的方法,而不能调用父类的属性
D 子类通过super关键字只能调用父类的属性,而不能调用父类的方法
思路:super关键字可以指代子类的直接父类方法,但是不可以直接指代父类的父类;子类通过super关键字既可以调用父类的属性,也可以调用父类的方法