普考申論題
110年
[資訊處理] 程式設計概要
第 一 題
📖 題組:
三、Java 是常用的物件導向程式語言。
三、Java 是常用的物件導向程式語言。
📝 此題為申論題,共 2 小題
小題 (一)
請寫出以下三個 Java 程式的執行結果。(15 分)
(1)
class square {
int edge;
square(int e){ edge = e; }
}
public class app {
public static void main(String args[]) {
square s1 = new square(10);
square s2 = new square(10);
if(s1 == s2)
System.out.print("Equal square");
else
System.out.print("Not equal square");
}
}
(2)
public class app {
public static void main(String args[]) {
int a[] = {1,2,3,4,5};
show(a);
}
public static void show(int i){
System.out.println(i);
}
public static void show(int b[]){
for(int i = 0; i < b.length; i++)
System.out.print(b[i] + " ");
}
}
(3)
class Circle {
protected double radius;
Circle(double r){ radius = r; }
void show(){ System.out.print(radius); }
}
class Coin extends Circle {
private int value;
Coin(double r, int v){
super(r);
value = v;
}
void show(){ System.out.print(radius+" "+value); }
}
public class app {
public static void main(String args[]){
Circle coin = new Coin(3.0, 10);
coin.show();
}
}
(1)
class square {
int edge;
square(int e){ edge = e; }
}
public class app {
public static void main(String args[]) {
square s1 = new square(10);
square s2 = new square(10);
if(s1 == s2)
System.out.print("Equal square");
else
System.out.print("Not equal square");
}
}
(2)
public class app {
public static void main(String args[]) {
int a[] = {1,2,3,4,5};
show(a);
}
public static void show(int i){
System.out.println(i);
}
public static void show(int b[]){
for(int i = 0; i < b.length; i++)
System.out.print(b[i] + " ");
}
}
(3)
class Circle {
protected double radius;
Circle(double r){ radius = r; }
void show(){ System.out.print(radius); }
}
class Coin extends Circle {
private int value;
Coin(double r, int v){
super(r);
value = v;
}
void show(){ System.out.print(radius+" "+value); }
}
public class app {
public static void main(String args[]){
Circle coin = new Coin(3.0, 10);
coin.show();
}
}
思路引導 VIP
此題包含三個獨立的 Java 小程式追蹤。
程式 (1) 考查「物件參考(Reference)比較」。使用 new 會在 Heap 區配置兩塊不同的記憶體,== 比較的是記憶體位址而非物件內容。
小題 (二)
下列 Java 程式之需求為:設定變數 color 的值並輸出。請指出其編譯錯誤原因,並針對該錯誤原因說明程式如何修正使之能正確執行。(10 分)
class Car {
private String color;
void showcolor() { System.out.println(color); }
}
public class app {
public static void main(String args[]) {
Car c1 = new Car();
c1.color = "blue";
c1.showcolor();
}
}
class Car {
private String color;
void showcolor() { System.out.println(color); }
}
public class app {
public static void main(String args[]) {
Car c1 = new Car();
c1.color = "blue";
c1.showcolor();
}
}
思路引導 VIP
這是一道物件導向「封裝(Encapsulation)」的觀念題。看到 private 存取修飾子,就要聯想到它只能在宣告它的類別內部被存取。在 app 類別中直接存取 c1.color 必定引發編譯錯誤。解決方法是遵循封裝原則,在 Car 類別中提供一個 public 的 Setter 方法,或者透過建構子來初始化屬性。