官术网_书友最值得收藏!

單元測試(一)

一、選擇題(每小題2分,共50分)

1.Java中定義類頭時,不可能用到的關鍵字是( )。

A.class

B.private

C.extends

D.public

2.下列類頭定義中,錯誤的是( )。

A.public x extends y {...}

B.public class x extends y {...}

C.class x extends y implements y1 {...}

D.class x {...}

3.設A為已定義的類名,下列聲明A類的對象a的語句中正確的是( )。

A.float A a;

B.public A a=A();

C.A a=new A();

D.static A a=new A();

4.設i、j為類X中定義的int型成員變量名,下列X類的構造方法中不正確的是( )。

A.void X(int k ){ i=k; }

B.X(int k ){ i=k; }

C.X(int m, int n ){ i=m; j=n; }

D.X( ){i=0;j=0; }

5.以下為類A中構造方法的聲明,其中正確的是( )。

A.void A(int x){...}

B.public A(int x){...}

C.public a(int x){...}

D.static A(int x){...}

6.下列方法定義中不正確的是( )。

A.float x( int a,int b ) { return (a-b); }

B.int x( int a,int b) { return a-b; }

C.int x( int a,int b ) { return a*b; }

D.int x(int a,int b) { return 1.2*(a+b); }

7.Java語言中類間的繼承關系是( )。

A.多重的

B.單重的

C.線程的

D.不能繼承

8.Java中所有的類都是通過直接或間接地繼承( )類得到的。

A.java.lang.Object

B.java.lang.Class

C.任意類

D.以上答案都不對

9.現有兩個類A、B,以下描述中表示B繼承自A的是( )。

A.class A extends B

B.class B implements A

C.class A implements B

D.class B extends A

10.對于任意一個類,用戶所能定義的構造方法的個數至多為( )。

A.0個

B.1個

C.2個

D.任意個

11.Java中類的構造方法何時被調用( )。

A.類定義時

B.創建對象時

C.調用對象方法時

D.使用對象的變量時

12.類是具有相同( )的一組對象的總稱,是對對象的抽象描述。

A.屬性和行為

B.對象和方法

C.變量和數據

D.對象和屬性

13.一個對象的生命周期分( )3個階段。

A.使用、生成和清除

B.清除、使用和生成

C.生成、使用和清除

D.生成、清除和使用

14.用來導入已定義好的類或包的語句是( )。

A.main

B.import

C.public class

D.class

15.設i、j、k為類School中定義的int型成員變量名,下列類School的構造方法中不正確的是( )。

A.School( int m){ ... }

B.void School( int m){ ... }

C.School( int m, int n){ ... }

D.School( int h,int m,int n){ ... }

16.為了調用超類的構造方法,可以使用( )關鍵字后跟包含該超類所需參數的一對圓括號。

A.superclass

B.superconstructor

C.super

D.以上答案都不對

17.設ClassA為已定義的類名,下列聲明ClassA類的對象ca的語句中正確的是( )。

A.public ClassA ca=new ClassA( );

B.public ClassA ca=ClassA( );

C.ClassA ca=new class( );

D.ca ClassA;

18.下列選項中,哪個是Java語言所有類的父類( )。

A.String

B.Vector

C.Object

D.KeyEvent

19.下列選項中,表示數據或方法只可以被同一包中的任何類或它的子類訪問,即使子類在不同的包中也可以訪問的修飾符是( )。

A.public

B.protected

C.private

D.final

20.下列選項中,表示數據或方法只能被本類訪問的修飾符是( )。

A.public

C.private

B.protected

D.final

21.在類的定義中,通過使用( )關鍵字可創建一個現有類的子類。

A.extends

B.implements

C.inherits

D.modifies

22.如果子類中的方法mymethod()覆蓋了父類中的方法mymethod(),假設父類方法頭部定義如下:void mymethod(int a),則子類方法的定義不合法的是( )。

A.public void mymethod(int a)

B.protected void mymethod(int a)

C.private void mymethod(int a)

D.void mymethod(int a)

23.在某個類中存在一個方法:void sort(int x),以下不能作為該方法的重載的聲明是( )。

A.public float sort(float x)

B.int sort(int y)

C.double sort(int x,int y)

D.void sort(double y)

24.當子類中的成員變量與父類中的成員變量同名時( )。

A.子類中的成員變量隱藏父類中的變量

B.父類中的成員變量隱藏子類中的變量

C.子類中變量無效

D.該聲明非法

25.如果創建的一個子類覆蓋一個父類public方法,則對該方法可以使用哪些修飾符修飾( )。

A.public

B.public和protected

C.private

D.任意修飾符都可以,由系統隨機選取

二、填空題(每小題1分,共10分)

1.如果子類中的某個成員變量的命名與它的父類中的某個成員變量完全一樣,則稱子類中的這個變量________了父類的同名變量。

2.屬性的隱藏是指子類重新定義從父類繼承來的同名__________。

3.如果子類中的某個方法的名字、返回值類型和__________與它的父類中的某個方法完全一樣,則稱子類中的這個方法覆蓋了父類的同名方法。

4.在Java程序中,通過類的定義只能實現單重繼承,但通過_________的定義可以實現多重繼承關系。

5.如果子類中的某個方法的名字、__________和參數列表與它的父類中的某個方法完全一樣,則稱子類中的這個方法覆蓋了父類的同名方法。

6.如果一個方法沒有返回值,則該方法返回值類型為______________。

7.同一個類中多個方法具有相同的方法名,不同的_____________稱為方法的重載。

8.通過類MyClass中的不含參數的構造方法,生成該類的一個對象obj,可通過以下語句實現:_______________________________。

9.如果子類中的方法compute()覆蓋了父類中的方法compute(),假設父類的compute()方法頭部有可見性修飾符public,則子類的compute()的可見性修飾符必須是__________。

10.__________是類中的一種特殊方法,是為對象初始化操作編寫的方法。

三、程序閱讀題(每小題4分,共20分)

1.下面是一個類的定義,請完成程序。

        public  class  ____________{
            int  x,y;
            Myclass(int  i,__________){  // 構造方法
                x=i;
                y=j;
            }
        }

2.下列程序的輸出結果是:____________________________。

        class Demo {
            public void test(){  System.out.println("NO");}
            public void test(int i){  System.out.println(i);}
            public void test(int a,int b){  System.out.println(a+b);}
        }
        public class Test{
            public static void main(String args[]){
                Demo de=new Demo();
                de.test();
                de.test(5);
                de.test(6,8);
            }
        }

3.下列程序的輸出結果是:____________________________。

        public class Test{
            public static void main(String[] args){
                Count myCount = new Count();
                int times = 0;
                for(int i=0;i<100;i++)
                    increment(myCount , times);
                System.out.println("count is " + myCount.count);
                System.out.println("time is "+ times);
            }
            public static void increment(Count c , int times){
                c.count++;
                times++;
            }
        }
        class Count{
            public int count;
            Count(int c){
                count =c;
            }
            Count(){
                count =1;
            }
        }

4.運行類C的輸出結果是:____________________________。

        class A{
            public A(){
                System.out.println("The default constructor of A is invoked");
            }
        }
        class B extends A{
            public B(){
                System.out.println("The default constructor of B is invoked");
            }
        }
        public class C{
            public static void main(String[]args)   {
                B  b=new  B();
            }
        }

5.閱讀下列程序,寫出輸出結果:____________________________。

        class A   {
            String s="class A";
            void show(){
                System.out.println(s);
            }
        }
        class B extends A{
            String s="class B";
            void show(){
                System.out.println(s);
            }
        }
        public class TypeConvert{
            public static void main(String args[]){
                B b1;
                B b2=new B();
                A a1,a2;
                a1=(A)b2;
                a2=b2;
                System.out.println(a1.s);
                a1.show();
                System.out.println(a2.s);
                a2.show();
                b1=(B)a1;
                System.out.println(b1.s);
                    b1.show();
                    System.out.println(b2.s);
                    b2.show();
                }
            }

四、編程題(共20分)

1.設計一個時間類MyTime,包含一個構造方法,3個私有成員變量hour、minute、second以及它們相應的setter和getter方法,再加上一個轉換成“××時:××分:××秒”格式字符串的方法toString。

2.設計一個日期類MyDate,包含一個構造方法,3個私有成員變量year、month、day以及它們相應的setter和getter方法,再加上一個轉換成“××××年××月××日”格式字符串的方法toString。

3.設計一個FullTime類,包含一個MyTime類型的私有成員變量time以及與之相對應的setter和getter方法;一個MyDate類型的成員變量date以及與之相對應的setter和getter方法,一個構造方法,再加上一個轉換成“××××年××月××日××時:××分:××秒”格式字符串的方法toString。

4.假設當前時間為2009年12月10日9點30分45秒,編寫一個程序,用FullTime類設置時間為以上時間,并打印輸出。

主站蜘蛛池模板: 延寿县| 威远县| 峨眉山市| 磴口县| 浏阳市| 乌兰察布市| 武汉市| 南宁市| 湘乡市| 祁阳县| 汕头市| 安多县| 拉孜县| 朝阳市| 宝清县| 延吉市| 六安市| 平山县| 读书| 通渭县| 衡阳县| 敖汉旗| 临沧市| 寻乌县| 姚安县| 石门县| 无为县| 金塔县| 临夏县| 贵南县| 松原市| 仙桃市| 安西县| 金昌市| 和静县| 宜兰市| 灵川县| 奉节县| 井研县| 梧州市| 平远县|