面向對象測試題


1.下列不屬於面向對象編程的特性的是(  C )。

A.封裝                         B.繼承

C.抽象                         D.多態

2.(*)下述概念中不屬於面向對象的是( D )。

A.對象                       B.繼承、多態

C.類、封裝                     D.過程調用

3.(*)對象是Java中很重要的概念,下列說法中能准確地描述對象的是( A   )。

A.對象是類的具體實例,可以操作數據的方法

B.對象是抽象的,類可以通過對象來生成

C.對象只是方法的集合

D.對象是一組具有共同的結構和行為的類

4.(*)下面有關變量及其作用域的陳述哪一項是錯誤的?(D

A.在方法里面定義的局部變量在方法退出的時候被撤銷

B.局部變量只在定義它的方法內有效

C.在方法外面定義的實例變量在對象被構造時創建

D.在方法中定義的方法的參變量只要該對象被需要就一直存在

5.下列方法的聲明中不合法的是(B )。

A.float play(){ return 1; }

B.void play(int d,e) { }

C.double play(int d) { return 2.0; }

D.int play(int r) { return 1; }

6.下列哪個方法不能與方法public void add(int a){ }重載?(A

A.public int add(int b) { }

B.public void add(double b) { }

C.public void add(int a, int b) { }

D.public void add(float g) { }

7.類Test定義如下:

1.public class Test {

2.    float use(float a, float b) {

3.    }

4.  

5.}

將以下哪種方法插入第4行是不合法的?( B

A.float use(float a, float b, float c) {  }

B.float use(float c, float d) {  }

C.int use(int a,int b) {  }

D.float use(int a, int b, int c) {  }

 

 

8.為了區分重載多態中同名的不同方法,要求(   A )。

A.采用不同的參數列表

B.返回值類型不同

C.調用時用類名或對象名做前綴

D.參數名不同

9.下列有關構造方法描述正確的是(    D)。

A.所有類都必須定義一個構造方法

B.構造方法必須有返回值

C.構造方法必須訪問類的非靜態成員

D.構造方法可以初始化類的成員變量

10.下列關於構造方法的敘述中,錯誤的是(C   )。

A.構造方法名與類名必須相同

B.構造方法沒有返回值,但不用void聲明

C.構造方法不可以重載

D.構造方法只能通過new自動調用

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

A.public A a =new A( );

B.A a = A( );

C.A a = new A();

D.a A;

12.給出如下類定義:

public class Test {

Test(int i) {

}

}

如果要創建一個該類的對象,正確的語句是( B )。

A.Test t = newTest();

B.Test t = newTest(5);

C.Test t = newTest("5");

D.Test t = newTest(3.4);

13.以下代碼的調試結果為(C  )。

class Square {

    int a;

    void Square() {

        a = 10;

    }

    public static void main(String[] args) {

        Square s = new Square();

        System.out.println(s.a);

    }

}

A.輸出10                       B.編譯錯誤

C.輸出0                        D.運行錯誤

14.下面程序的輸出結果是()。

class Test {

    int i = 2;

    String s = null;

    void Test() {

        i = 3;

        s = "days";

    }

    public static void main(String args[]) {

        Test t = new Test();

        System.out.println(t.i + t.s);

    }

}

A.2null                        B.3null

C.3days                        D.以上都不對

15.編譯並運行下面的Java程序,將產生什么結果?(D  )

class A {

    int i = 1;

    int j;

    public static void main(String[] args) {

        int k;

        A a = new A();

        System.out.println(a.i + a.j + k);

    }

}

A.0                            B.1

C.2                            D.出現編譯錯誤

16.如下代碼的輸出結果是(  C )。

public class Test {

    void printValue(int m) {

        do {

            System.out.println("The value is " + m);

        } while (--m > 10);

    }

    public static void main(String arg[]) {

        int i = 10;

        Test t = new Test();

        t.printValue(i);

    }

}

A.The value is8               B.Thevalue is 9

C.The value is10              D.Thevalue is 11

17.如下代碼的輸出結果是(  D )。

class Point {

    int x, y;

    Point(int a, int b) {

        x = a;

        y = b;

    }

}

class Test {

    public static void main(String[] args) {

        Point p1, p2;

        p1 = new Point(3, 6);

        p2 = new Point(8, 9);

        p1 = p2;

System.out.println("p1.x= " + p1.x + ", p1.y = " + p1.y);

    }

}

A.p1.x = 3, p1.y = 6           B.p1.x = 3, p1.y= 9

C.p1.x = 8, p1.y = 6           D.p1.x = 8, p1.y= 9

二、簡答題

1.簡述面向對象編程的三個主要特征。

封裝:客觀事物封裝成抽象的類

繼承:子類繼承父類的所有特征和行為

多態:父類引用變量可以指向子類對象

 

2.什么是方法的重載?

在同一個類中定義多個同名的方法,

方法名一樣,參數類型或者個數不一樣

 

3.簡述成員變量和局部變量的區別?

成員變量:作為類的成員直接存在類中,可以通過this引用

局部變量:在方法定義或聲明上

內存位置不同:成員變量在堆,局部變量在棧

成員變量有默認值初始化

局部變量沒有,必須定義賦值才能

 

4.在寫好java文件后,編譯時會編譯java文件中的注釋代碼嗎?

不會   只識別代碼

5.什么是方法的重寫?

 

子類繼承父類方法,方法名一樣,參數列表一樣

而且只能重寫父類非私有的方法

 

三、編程題

1.定義立方體類Cube,具有屬性邊長和顏色,具有方法設置顏色和計算體積,在該類的主方法中創建一個立方體對象,將該對象的邊長設置為3,顏色設置為“green”,輸出該立方體的體積和顏色。4

public class Cube {

     static double side;

     static String color;

 

     Cube(double side){

         this.side=side;

     }

     public static double bulk(){

         return side*side*side;

     }

     public static void setColor(String c){

         color=c;

     }

}

public class Test {
 

     public static void main(String[] args) {

         Cube c=new Cube(4);

         c.setColor("green");

         System.out.println("立方體的體積為:"+c.bulk());

         System.out.println(" 顏色為:"+c.color);

        

     }

 

}

 

 

 

2.編寫Java應用程序,該程序中有梯形類和主類。要求如下:8

(1)梯形類具有屬性上底、下底、高和面積,具有返回面積的功能,在構造方法中對上底、下底和高進行初始化。

(2)主類用來測試梯形類的功能。

 1 public class Ladder {
 2 
 3      double upper;
 4 
 5      double bottom;
 6 
 7      double height;
 8 
 9      double area;
10 
11      public Ladder(double upper, double bottom, double height) {
12 
13          super();
14 
15          this.upper = upper;
16 
17          this.bottom = bottom;
18 
19          this.height = height;
20 
21      }
22 
23      //返回面積
24 
25      public double getArea(){
26 
27          area=(upper+bottom)*height/2;
28 
29          return area;
30 
31      }
32 
33 }
34 
35 測試類:
36 
37 public class Zhu {
38 
39      public static void main(String[] args) {
40 
41          Ladder lad=new Ladder(2, 5, 9);
42 
43          System.out.println("梯形的面積為:"+lad.getArea());
44 
45      }
46 
47 }

 

 

 

 

3.按要求編寫Java應用程序:8

(1)定義描述學生的類Student,有一個構造方法對屬性進行初始化,一個outPut方法用於輸出學生的信息。

(2)定義主類,創建兩個Student類的對象,測試其功能。

 1 public class Student {
 2 
 3      String name;
 4 
 5      String sex;
 6 
 7      int age;
 8 
 9      public Student(String name, String sex, int age) {
10 
11          super();
12 
13          this.name = name;
14 
15          this.sex = sex;
16 
17          this.age = age;
18 
19      }
20 
21      public void outPut(){
22 
23          System.out.println("學生的姓名為:"+this.name+"\t性別為:"+this.sex+"\t年齡為:"+this.age);
24 
25      }
26 
27 }
28 
29 public class TestStu {
30 
31      public static void main(String[] args) {
32 
33          Student stu=new Student("夏目", "男", 20);
34 
35          stu.outPut();
36 
37          Student stu1=new Student("娘口三三", "男", 18);
38 
39          stu1.outPut();
40 
41      }
42 
43 }

 

 

 

 

 

4.(*)定義機動車類,具有屬性:車牌號、車速和載重量,具有功能:加速、減速。一個構造方法沒有形參,在方法中將車牌號設置為“遼A1234”,速度為100,載重量為50;另一個構造方法用形參為對象的所有屬性賦值。5

在主類中創建兩個機動車對象,創建第一個時調用無參數的構造方法,使其加速10。創建第二個時調用有參數的構造方法,使其車牌號為“遼B5678”,車速為80,載重量為20,並讓其減速20。最后輸出兩輛車的所有信息。

 1 public class Car {
 2 
 3      String num;
 4 
 5      double speed;
 6 
 7      double weight;
 8 
 9      double speedUp;
10 
11      double speedDown;
12 
13      Car(){
14 
15          num="遼A1234";
16 
17          speed=100;
18 
19          weight=50;
20 
21      }
22 
23      Car(String n, double s, double w) {
24 
25          num=n;
26 
27          speed=s;
28 
29          weight=w;
30 
31      }
32 
33      public void speedUp(int s) {
34 
35          speed+=s;
36 
37         
38 
39      }
40 
41      public void speedDown(int d){
42 
43          speed-=d;
44 
45      }
46 
47     
48 
49 }
50 
51  
52 
53  
54 
55 public class TestCar {
56 
57      public static void main(String[] args) {
58 
59          Car c=new Car();
60 
61          c.speedUp(10);
62 
63          Car c1= new Car("遼B5678",80, 20);
64 
65          c1.speedDown(20);
66 
67          System.out.println(c.num + "的車速為" +c.speed + ", 載重量為" +c.weight);
68 
69          System.out.println(c1.num + "的車速為" +c1.speed + ", 載重量為" +c1.weight);
70 
71      }
72 
73 }

 

 

 

5.(*)按要求編寫Java應用程序。9

(1)定義Teacher類,具有屬性:教師的姓名、年齡、教授的課程以及是否擔任班主任,方法printInfo輸出教師的姓名、年齡和所教授的課程,構造方法為成員變量賦值。
(2)定義Team類,有屬性:班級名稱和班主任,有一個輸出班級名稱的方法,另一個是構造方法,為成員變量賦值。
(3)定義主類TestTeam,創建一個班級對象,輸出班級名稱和班主任的詳細信息。

public class Teacher {    String name; String coures; int age; boolean Tutor; public Teacher(String name, String coures, int age,boolean Tutor) { super(); this.name = name; this.coures = coures; this.age = age; this.Tutor=Tutor; } public void printlnfo(){ System.out.println("老師的姓名為:"+this.name+"\t\t年齡為:"+this.age+"\t教授課程為:"+this.coures); } } public class Team { String classname; Teacher tutor; public Team(String classname, Teacher tutor) { super(); this.classname = classname; this.tutor = tutor; } public void className(){ System.out.println("班級名稱為:"+this.classname); } } public class TestTeam { public static void main(String[] args) { Teacher tea=new Teacher("薛之謙", "音樂", 33, true); Team tea1=new Team("金曲撈", tea); tea1.className(); tea1.getTutor().printlnfo(); } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM