JAVA程序设计第五章


一. 填空题(共14题)
1. (填空题)JAVA中子类可以有多个父类吗?回答可以或者不可以_______。

    (1) 不可以


2. (填空题)JAVA中所有类的祖先类是______。

    (1) Object

3. (填空题)如果子类和父类不在同一个包中,子类是否继承父类的友好成员?回答是或否______。

    (1) 否


4. (填空题)子类通过声明与父类同名的成员变量可以________继承的成员变量。

    (1) 隐藏


5. (填空题)子类重写的方法类型和父类的方法的类型一致或者是父类的方法的类型的_______,重写的方法的名字、参数个数、参数的_______和父类的方法完全相同。

    (1) 子类型
    (2) 类型

6. (填空题)父类的final方法可以被子类重写吗?回答可以或者不可以_______。

    (1) 不可以

7. (填空题)______类中可以有abstract方法。

    (1) abstract;抽象

8. (填空题)上转型对象不能操作子类新增的成员变量,不能调用子类新增的方法。上转型对象可以访问子类继承或______的成员变量,可以调用子类继承的方法或子类______的实例方法。

    (1) 隐藏
    (2) 重写

9. (填空题)一个类的各个子类是通过_______方法体现多态的。

    (1) 重写

10. (填空题)

面向抽象编程目的是为了应对________的变化,核心是让类中每种可能的变化对应地交给抽象类的一个______去负责,从而让该类的设计者不去关心具体实现。

    (1) 用户需求
    (2) 子类

11. (填空题)

请说出E类中【代码1】,【代码2】的输出结果________,__________。

class A {

   double f(double x,double y) {

     return x+y;

   }

}

class B extends A {

   double f(int x,int y) {

     return x*y;

  }

}

public class E {

public static void main(String args[]) {

      B b=new B();

      System.out.println(b.f(3,5));     //【代码1】

      System.out.println(b.f(3.0,5.0));  //【代码2】

  }

}

    (1) 15.0
    (2) 8.0

12. (填空题)

说出下列B类中【代码1】,【代码2】的输出结果_______,________。

class A {

   public int getNumber(int a) {

      return a+1;

   }

}

class B extends A {

   public int getNumber (int a) {

      return a+100;

   }

   public static void main (String args[])  {

      A a =new A();

      System.out.println(a.getNumber(10));  //【代码1】

      a = new B();

      System.out.println(a.getNumber(10));  //【代码2】

   }

}

    (1) 11
    (2) 110

13. (填空题)

请说出E类中【代码1】~【代码4】的输出结果______,_______,________,________。

class A {

double f(double x,double y) {

      return x+y;

   }

   static int g(int n) {

      return n*n;

   }

}

class B extends A {

   double f(double x,double y) {

      double m = super.f(x,y);

      return m+x*y;

   }

   static int g(int n) {

      int m = A.g(n);

      return m+n;

   }

}

public class E {

   public static void main(String args[]) {

     B b = new B();

     System.out.println(b.f(10.0,8.0));   //【代码1】

     System.out.println(b.g(3));        //【代码2】

     A a = new B();

     System.out.println(a.f(10.0,8.0));   //【代码3】

     System.out.println(a.g(3));        //【代码4】

  }

}

    (1) 98.0
    (2) 12
    (3) 98.0
    (4) 9

14. (填空题)

请说出E类中【代码1】~【代码3】的输出结果_____,_____,_______。

class A {

   int m;

   int getM() {

      return m;

   }

   int seeM() {

       return m;

   }

}

class B extends A {

     int m ;

     int getM() {

        return m+100;

     }

}

public class E {

public static void main(String args[]) {

     B b = new B();

     b.m = 20;

     System.out.println(b.getM());  //【代码1】

     A a = b;

     a.m = -100;                

     System.out.println(a.getM());  //【代码2】

     System.out.println(b.seeM()); //【代码3】

  }

}

    (1) 120
    (2) 120
    (3) -100


二. 单选题(共8题,35.2分)
15. (单选题)

下列哪个叙述是正确的?

    A. 子类继承父类的构造方法。
    B. abstract类的子类必须是非abstract类。
    C. 子类继承的方法只能操作子类继承和隐藏的成员变量。
    D. 子类重写或新增的方法也能直接操作被子类隐藏的成员变量。

 C :子类继承的方法只能操作子类继承和隐藏的成员变量。;

16. (单选题)

下列哪个叙述是正确的?
    A.  final 类可以有子类。
    B.   abstract类中只可以有abstract方法。
    C.   abstract类中可以有非abstract方法,但该方法不可以用final修饰。
    D. 不可以同时用final和abstract修饰同一个方法。
    E. 允许使用static修饰abstract方法。

D :不可以同时用final和abstract修饰同一个方法。

17. (单选题)

假设C是B的子类,B是A的子类,cat是C类的一个对象,bird是B类的一个对象,下列哪个叙述是错误的?


    A. cat instanceof B的值是true。
    B. bird instanceof A的值是true。
    C. cat instanceof A的值是true。
    D.bird instanceof C的值是true

 D :bird instanceof C的值是true

18. (单选题)

下列程序中注释的哪个代码(A,B,C,D)是错误的(无法通过编译)?

class A {

   static int m;

   static void f(){

       m = 20 ;          //A

   }

}

class B extends A {

   void f()              //B

   {  m = 222 ;         //C      

   }

}

class E {

   public static void main(String args[]) {

      A.f();            // D    

   }

}


    A. m = 20 ;  
    B. void f()     
    C. m = 222 ;
    D.   A.f();    

 B :void f() ;
  代码中标注的(A,B,C,D)中,哪一个是错误的?

abstract class Takecare {

    protected void speakHello() {}     //A

    public abstract static void cry();    //B

    static int f(){ return 0 ;}          //C

    abstract float g();                //D

}


    A. protected void speakHello() {}
    B. public abstract static void cry();  
    C. static int f(){ return 0 ;}
    D. abstract float g();    

 B :public abstract static void cry();

下列程序中注释的哪个代码(A,B,C,D)是错误的(无法通过编译)?

abstract class A {            

   abstract float getFloat ();  //A

   void f()                //B

   { }

}

public class B extends A {

   private float m = 1.0f;      //C

   private float getFloat ()     //D

   {  return m;

   }

}


    A. abstract float getFloat ();
    B. void f()     
    C. private float m = 1.0f;
    D. private float getFloat ()  

 D :private float getFloat (
 

21. (单选题)

将下列哪个代码(A,B,C,D)放入程序中标注的【代码】处将导致编译错误?

class A {

   public float getNum() {

       return 3.0f;

   }     

}

public class B extends A {

      【代码】

}  


    A. public float getNum(){return 4.0f;}
    B. public void getNum(){ }
    C. public void getNum(double d){ }
    D. public double getNum(float d){return 4.0d;}

 B :public void getNum(){ } ;
 

22. (单选题)

对于下列代码,下列哪个叙述是正确的?

class A {

   public int i=0;

   A(int m) {

     i = 1;

   }

}

public class B extends A {

    B(int m) {

       i = 2;

    }

    public static void main(String args[]){

       B b = new B(100);

       System.out.println(b.i); //【代码】

    }

}


    A.  程序提示编译错误(原因是A类没有不带参数的构造方法)
    B. 编译无错误,【代码】输出结果是0。
    C. 编译无错误,【代码】输出结果是1。
    D. 编译无错误,【代码】输出结果是2。

 A : 程序提示编译错误(原因是A类没有不带参数的构造方法)
 

三. 多选题(共1)
23. (多选题)

下列程序中注释的哪两个代码(A,B,C,D)是错误的(无法通过编译)?

class Father {

   private int money =12;

   float height;

   int seeMoney(){

      return money ;           //A

   }

}

class Son extends Father {

   int height;

   int lookMoney() {

      int m = seeMoney();      //B

      return m;             

   }

}

class E {

   public static void main(String args[]) {

      Son erzi = new Son();

      erzi.money = 300;       //C

      erzi.height = 1.78F;      //D

   }

}


    A.   return money ;    
    B.   int m = seeMoney();
    C.   erzi.money = 300;   
    D.  erzi.height = 1.78F;

CD.  erzi.money = 300; erzi.height = 1.78F;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值