1. 程式人生 > >java第七章練習題(多型)

java第七章練習題(多型)

第七章練習題(多型)

    1.下列自‘關多型的敘述正確的是哪項?(選兩項)

    A.父類的引用指向子類的例項是一種多型

    B. 子類的引用指向子類的例項是一種多型

    c.介面的引用指向實現該介面類的例項是一種多型

    D.抽象類的引用指向抽象類的例項是一種多型

    2.Java中方法繫結有哪些形式?(選兩項)

    A.編譯時刻繫結

    B.執行時刻繫結

    c.靜態繫結

    D.私有繫結

    3.表示式"hello" instance of String返回的值是哪項?

    A.   true

    B.  false

    C.  1

    D.  0

    4.求平方根方法public static double sqrt (double a)可以傳遞的引數

    型別有哪些?(選三項)

    A. byte

    B.float

    C. String

    D. long

    5.涉及類MyClass的方法簽名足public void  find(MyClass a),那麼該 方法可接收的實際引數的型別可以是哪些?(選兩項)

    A. MyClass類的型別

    B. MyClass子類的型別

    C. Object型別

    D.所有介面

    6.使用下列哪些關鍵字可以判定實參的具體型別?

    A. as

    B. is

    C. instanceof    

    D. extends

    7.  現有:

    class Pencil  {

    public void write (String content){

    System.out.println ("Write"+content);

    }

    }

    class RubberPencil extends Pencil{

    public void erase (String content){

    System.out.println ("Erase"+content);

    }

    }

    執行下列程式碼的結果是哪項?

    Pencil pen=new RubberPencil();

    pen.write ("Hello");

    pen.erase ("Hello");

    A. Write Hello

       Erase Hello

    B. Erase Hello

       Write Hello

    C.編譯錯誤

    D.執行時丟擲異常

    8.  現有:

    class Pencil  {

    public void write (String content){

    System.out.println ("Write"+content);

    }

    }

    class RubberPencil extends Pencil{

    public void write (String content){

    System.out.println ("Rubber Write"+content);

    }

    public void erase (String content){

    System.out.println ("Erase "+content);

    }

    }

    執行下列程式碼的結果是哪項?

    Pencil pen=new RubberPencil();

    pen.write("Hello");

    A.  Write Hello

    B.  Rubber Write Hello

    C.編譯錯誤

    D.執行時丟擲異常

    9  下列哪些方法是在編譯時刻繫結的?(選三項)

    A.靜態方法

    B. private方法

    C.final方法

    D.非private方法

    10.現有:

    class Pencil  {

    public void write (String content){

    System.out.println( "Write",+content){

    }

    }

    class RubberPencil extends Pencil{

    public void write (String content){

    System.out.println("Rubber Write"+content);

    }

    public void erase (String content){

        System.out.println( "Erase "+content);

    }

    }

    執行下列程式碼的結果是哪項?

    Pencil  pen=new  Pencil();

    (( RubberPencil) pen).write( "Hello");

    A. Write Hello

    B.  Rubber Write Hello

    c.編譯失敗

       D.執行時丟擲異常//Pencil cannot be cast to RubberPencil

    1 1.現有:

    class TestA  {

    public void start()  {  System.out.println("TestA");  }

    }

    public class TestB extends TestA  {

    public void start()  {  System.out.println("TestB");  }

    public static v.id main(string[]  args)  (

    ((TestA)new TestB()).start();

    }

    }

    執行結果是哪項?

    A.  TeStA

    B.  TeStB

    c.編譯失敗

    D.執行時丟擲異常

    12.現有:

    class A  {public String name="a"}

    class B extends A {public String name="b"}

    執行如下程式碼後的結果是哪項?

    A a=new B();

    System.out.println(a.name);

    A.  a

    B.  b

    c.編譯失敗

    D.執行時丟擲異常

    13.現有:

    1  Interface F{}

    2  class A implements F{}

    3  class B extends A{}

    4  class C extends B{

    5    public static void main(String[]  args){

    6    B b=new B();

    7    //inSert C0de here

    8    }

    9    }

    下列哪行程式碼插入到第7行,將丟擲java.lang.ClassCaseException異常7

    A.   A a=b;

    B.  F f=  (C)b;

    C.  F f=  (A)b;

    D.  B bb=  (B)(A)b;

14.現有:

1.  class Guy  {  String greet()  {  return "hi";  }  j

2.  class Cowboy extends Guy  {  String greet()  {  return. "howdy";}}

3.  class  Wrangler  extends  Cowboy  {  String  greet()  {  return  "orch!"; } }

4.

5.  class Greetings2  {

6.   public  static void main (String  []  args)  {

7.     Guy g=new Wrangler();

8.    Guy g2=new Cowboy();

9.     Wrangler w2=new Wrangler();

10.    System. out .print (g.greet()+g2.greet()+w2 .greet());

11.    }

12.  }

    結果是什麼?

    A. hi hi ouch!

    B. ouch!  howdy  ouch!

    C. hi howdy ouch!

    D.編譯失敗

    E.執行的咐候有異常丟擲

    15.現有:

    class ClassA  {}

    class ClassB extends ClassA  {)

    class ClassC extends ClassA  {)

    以及:

    ClassA p0=new ClassA();

    ClassB pl=new ClassB();

    ClassC p2=new ClassC();

    ClassA p3=new ClassB();

    ClassA p4=new ClassC();

·    下列哪些是正確的?(選三項]

    A.p0=pl;

    B.p1 =p2;

    C.p2=p4;

    D.p2 = (ClassC)pl;

    E.p1 = (ClassB)p3;

    F.p2 =  (Classc)p4;

參考答案

  1AC

  2AB

  3A

  4ABD

  5AB

  6C

  7C

  8B

  9ABC

  10 D

  11 B

  12 A

  13 B

  14 B

  15AEF