You are on page 1of 3

金門技術學院 資管科 日間部二年級 物件導向程式設計 92 下學期 期中考 出題者 : 陳鍾誠

學號 : 姓名 : 分數 :

1. 請寫出 10 個 Java 的關鍵字 (Keyword) (10%)

class extends while if do else switch case for public

2. 請說明下列概念 (10%)
A. 傳值參數 (Call by value)
將值復製一份傳過去給對方的參數,即使在函數中改變內容也不會傳回。

B.
傳址參數 (Call by reference)
將位址傳過去給對方的參數,若在函數中更改變數內容將會反映在原變數上。

C.
封裝 ( Encapsulation)
將資料與函數封存在物件中,並利用存取規則 public , private 等開放或禁止存取,稱為封裝。

D. 繼承 (Inheritance)
類別 class 與 class 之間的一種父子關係,子類別可以延用父類別的資料與方法,並可修改之。

E.
多型 (Polymorphism)
繼承相同父類別的物件,在執行時會自動根具其類別而執行對應的函數,稱之為多型。

3. 請圈選出下列變數宣告中不合法的 Java 變數名稱,並說明錯誤原因. (5%)


A. int X; (對)

B. int 31x; (錯 : 不可用數字開頭)

C. int Happy; (對)

D. int x1$z; (錯 : 不可有 $ 符號)

E. int 1_y; (錯 : 不可用數字開頭)

4. 除錯題 : 請圈選出下列 Java 程式中錯誤的項目(共有五個),並註明正確的寫法 (10%)


class Error {
public void main(string[] args) { // string  String 加上 static
int i;
For (i = = 0; i < 10; i++) { // For  for, i = = 0 改為 i=0
if (I % 2 = 0) // I  i
System.out.println(“i=”& i); // &  +
}
}
}

5. 請寫出可以列印出 Hello ! 的完整 Java 程式 - Hello.java (10%)


class Hello {
public static void main(String[] args) {
System.out.println(“Hello!”);
}
}
6. 延續上題 (5%)
A. 請寫出將上例 Hello.java 編譯成 Hello.class 的指令 (3%)
javac Hello.java

B. 請寫出可以執行 Hello.class 檔案的指令 (2%)


java Hello

7. 請利用 if 寫出 max() 函數,可傳回兩個整數中的最大值 (10%)


int max(int a, int b) {
// 請填入程式碼於此區域
if (a < b)
return b;
else
return a;
}

8. 請利用 for 寫出 sum(n) 函數,該函數可計算 1+2+…+n 的總和 (10%)


int sum(int n) {
// 請填入程式碼於此區域
int sum = 0;
for (int i=1; i<=n; i++)
sum += i;
return sum;
}

9. 以下類別 Str 是利用字元陣列 char[] 所定義的,請寫出函數中的空白部份 (10 %)


class Str {
char[] s = new char[100]; // 請用 ‘\0’ 作為字串的結尾
Str() { s[0] = ‘\0’; }

public Str length() { // 傳回本字串的長度(5%)


// 請填入程式碼於此區域
int i;
for (i=0; i<100; i++) {
if (s[i] == ‘\0’) break;
}
return i;
}

public Str append(Str pStr) { // 將 pStr 的內容補在本字串的後面 (5%)


// 請填入程式碼於此區域
int i;
int len = length();
for (i=0; i<pStr.length(); i++)
s[len+i] = pStr.s[i];
s[len+i] = ‘\0’;
return this;
}
}
10. 請寫出下列 Person 類別之函數中的空白部份 (10%)
class Person {
String name;
int age;

public static void main(String[] args) {


Person p1 = new Person(“小明 ”, 11), p2 = new Person(“小華 ”, 12);
System.out.println(p1.toString());
}

Person(String pName, int pAge) { // Person 的建構函數,指定 name, age 參數 (5%)


// 請填入程式碼於此區域
name = pName;
age = pAge;
}

public String toString() { // 將 Person 轉為字串的函數 (5%)


// 請填入程式碼於此區域
String rzStr = name + “ “ + age;
return rzStr;
}
}

11. 請繼承上題的 Person 類別,寫出一個 Employee 類別,具有 (name, age, job) 等三個欄位,並且有建構函數
Employee(String pName, int page, String pJob) 與 String toString() 兩個函數 (10%)

class Employee extends Person {


String job;
Employee(String pName, int pAge, String pJob) {
super(pName, pAge);
job = pJob;
}
public String toString() {
return super.toString() + “ “+ job;
}
}

You might also like