《Java语言程序设计基础教程》
练习思考题参考答案
第4章 继承、接口和内部类
4.1单项选择题
1、 Java中用于定义接口的关键字是( )
A、import B、package
C、class D、interface
解答:D
2、 以下关于abstract的说法,正确的是( )
A、abstract只能修饰类
B、abstract只能修饰方法
C、abstract类中必须有abstract方法
D、abstarct方法所在的类必须用abstract修饰
解答:D
3、 下列哪种说法是正确的( )
A、私有方法不能被子类覆盖。
B、子类可以覆盖超类中的任何方法。
C、覆盖方法可以声明自己抛出的异常多于那个被覆盖的方法。
D、覆盖方法中的参数清单必须是被覆盖方法参数清单的子集。
解答:A
4、关于类继承的说法,正确的是( )
A、Java 类允许多重继承
B、Java接口允许多继承
C、接口和类都允许多继承
D、接口和类都不允许多继承
解答:B
5、 关于抽象类,正确的是______。
A. 抽象类中不可以有非抽象方法
B. 某个非抽象类的父类是抽象类,则这个子类必须重载父类的所有抽象方法
C. 可以用抽象类直接去创建对象
抽象类的使用D. 接口和抽象类是同一个概念
解答:B
8、 抽象类A和抽象类B的定义如下:
abstract class A {
abstract int getinfo();
}
public class B extends A {
private int a = 0;
public int getinfo() {
return a;
}
public static void main(String args[]) {
B b = new B();
System.out.info());
}
}
关于上述代码说明正确的是( )。
A. 输出结果为0 B.通过编译但没有输出任何结果
C. 第5行不能通过编译 D. 程序第2行不能通过编译
解答:A
9、 下面程序的运行结果是______
class ex4_5_11_A {
protected static int count = 0;
public ex4_5_11_A() {
count++;
}
}
class ex4_5_11_B extends ex4_5_11_A {
public ex4_5_11_B() {
count++;
}
}
class ex4_5_11 {
public static void main(String args[]) {
ex4_5_11_B x = new ex4_5_11_B();
System.out.println("count=" + x.count);
}
}
A. count=1 B. count=2
C. count=3 D. count=4
解答:B
10、设有下面两个类的定义:
class Person
{ long id; // 身份证号
String name; // 姓名
}
class Student extends Person
{ int score; // 入学总分
int getScore(){
return score;
}
}
问:类Person和类Student的关系是( )
A、包含关系 B、继承关系
C、关联关系 D、无关系,上述类定义有语法错误
解答:B
11、以下程序代码错误的是( B )。
abstract class P{}
class A extends P{}
abstract class B extends P{}
(A)P p=new A(); (B)P p=new B();
(C)A a=new A(); (D)P p=new P(){void foo(){}};
12、下面是People和Child类的定义和构造方法,每个构造方法都输出编号。在执行new Child("mike")的时候都有哪些构造方法被顺序调用?请选择输出结果 ( D)
class People {
String name;
public People() {
System.out.print(1);
}
public People(String name) {
System.out.print(2);
this.name = name;
}
}
class Child extends People {
People father;
public Child(String name) {
System.out.print(3);
this.name = name;
father = new People(name + ":F");
}
public Child() {
System.out.print(4);
}
}
A312 B 32 C 432 D 132
13、选项中哪一行代码可以替换题目中//add code here而不产生编译错误?(A)
public abstract class MyClass {
public int constInt = 5;
//add code here
public void method() {
}
}
A public abstract void method(int a);
B constInt = constInt + 5;
C public int method();
D public abstract void anotherMethod() {}
15、以下哪项是接口的正确定义?( D )
A、 interface B { void print() { } }
B、 abstract interface B { void print() }
C、 abstract interface B extends A1,A2 //A1、A2为已定义的接口
{ abstract void print(){ };}
D、 interface B { void print();}
16、A派生出子类B,B派生出子类C,并且在Java源代码中有如下声明:
1. A a0=new A();
2. A a1 =new B();
3. A a2=new C();
问以下哪个说法是正确的? ( D )
A、只有第1行能通过编译
B、第1、2行能通过编译,但第3行编译出错
C、第1、2、3行能通过编译,但第2、3行运行时出错
D、第1行、第2行和第3行的声明都是正确的
17、假设A类有如下定义,设a是A类的一个实例,下列语句调用哪个是错误的?( C )
class A
{ int i;
static String s;
void method1() { }
static void method2() { }
}
A、System.out.println(a.i); B、a.method1();
C、A.method1(); D、A.method2()
18、以下关于继承的叙述正确的是( A )。
A、在Java中类只允许单一继承
B、在Java中一个类只能实现一个接口
C、在Java中一个类不能同时继承一个类和实现一个接口
D、在Java中接口只允许单一继承
19、以下关于抽象类和接口的说法错误的是(E )
A、 抽象类在Java语言中表示的是一种继承关系,一个类只能使用一次继承。但是一 个类却可以实现多个接口。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论