《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小时内删除。