一、单项选择题
1.下列程序运行结果是( )。
private class Base {
Base() {
int i = 100;
System.out.println(i);
}
}
public class Pri extends Base {
static int i = 200;
public static voidmain(String argv[]) {
Pri p = new Pri();
System.out.println(i);
}
}
A.编译错误 B.200
C.100 200 D.100
2.下列程序运行结果是( )。
class Base {
Base() {
int i = 100;
System.out.println(i);
}
}
public class Pri extendsBase {
static int i = 200;
public static void main(String argv[]) {
Pri p = newPri();
System.out.println(i);
}
}
A.编译错误 B.200
C.100 200 D.100
3.在Java中,下面描述正确的是( )。
A.一个子类可以有多个父类,一个父类也可以有多个子类
B.一个子类可以有多个父类,但一个父类只可以有一个子类
C.一个子类只可以有一个父类,但一个父类可以有多个子类
D.上述说法都不对
4.设有文件Derived.java中代码如下:
public class Base extendsObject {
String objType;
public Base() {
objType = "I am a Base type";
}
}
public class Derived extendsBase {
public Derived() {
objType = "I am a Derived type";
}
public static void main(String args[]) {
Derived d = newDerived();
}
}
编译程序将出现何问题?( )
A.将创建 Base.class 和 Derived.class 两个文件
B.编译程序将指示第1行有问题
C.编译程序将在第7行出错
D.以上都不对
5.看下列程序
package a;
class Parent {
private int i = 20;
protected int j = 30;
public int k = 40;
int h = 50;
}
class Child extends Parent {
void f() {
}
}
在子类child的方法f()中不可以操作的变量是( )。
A.i B.j
C.k D.h
6.看下列程序
package a;
class Parent {
private int i = 20;
protected int j = 30;
public int k = 40;
int h = 50;
}
class Child extends Parent {
}
class GrandSon extends Child {
void f() {
}
}
在子类GrandSon的方法f()中不可以操作的变量是( )。
A.i B.j
C.k D.h
7.类的声明如下:
class A {
}
则类A的父类是( )。
A.没有父类 B.本身
C.java.lang.Object D.以上都不对
8.下列程序的运行结果是( )。
class Parent {
int i = 20;
int j = 30;
void f() {
System.out.print("" + i);
}
}
class Child extends Parent {
int i = 30;
intk = 40;
voidf() {
System.out.print(" " + i);
}
voidg() {
System.out.print("" + k);
}
public static void main(String args[]) {
Parent x = newChild();
System.out.print(x.i);
x.f();
Child x1 = (Child) x;
System.out.print("" + x1.i);
x1.f();
}
}
A.30 30 3030 B.20 20 20 20
C.20 30 3030 D.都不对
9.关于重载和重写的叙述正确的是( )。
A.重载是多态的一种,而重写不是
B.重载是子类中定义的方法和父类中某个方法相同
C.重写是一个类中多个同名的方法,并且方法的参数不同
D.重写方法时不允许降低方法的访问权限
10.哪个选项可以作为以下方法的覆盖方法?( )
public void add(int a) {…}
A.public void add(int b) {…}
B.void add(int a) {…}
C.public int add(int a) {…}
D.public void add(float a) {…}
11.( )是在子类中创建一个和父类具有一样特征的方法,特征包括方法名字、参数个数、参数类型和方法返回值类型。
A.覆盖 B.重载
C.继承 D.以上都不正确
12.第10行将调用的会是哪个方法?( )
1.class Person {
2. public voidprintValue(int i, int j) { }
3. public voidprintValue(int i) { }
4.}
5.public class Teacher extendsPerson {
6. public voidprintValue() { }
7. public voidprintValue(int i) { }
8. public static void main(String args[]) {
9. Person t = new Teacher();
10. t.printValue(10);
11. }
12.}
A.on line 2 B.on line 3
C.on line 6 D.on line 7
13.哪种访问组合可放在第2行add前和第6行的add前?( )
1.class SuperDuper {
2. void add() {
3. }
4.}
5.class Sub extends SuperDuper {
6. void add() {
7. }
8.}
A.line 2: public; line 6: private
B.line 2: protected; line 6: private
C.line 2: private; line 6: protected
D.line 2: public; line 6: protected
14.下列程序的运行结果是( )。
public class Test {
public static void test() {
this.print();
}
public static void print() {
System.out.println("Test");
}
public static void main(String args[]