問一Java基礎問題 |
尚未結案
|
Komuro
一般會員 發表:27 回覆:46 積分:14 註冊:2004-02-19 發送簡訊給我 |
近來對Java很有興趣看了本Java的書,發現一問題,請各位幫解一下
Apple.java
class Apple {
02 String color;
03 Apple(String color){
04 this.color = color;
05 }
06 }
07 class GoldApple extends Apple{}
08 class QC{
09 public static void main(String[] args){
10 String color01 = “RED”;
11 String color02 = methodA(color1);
12 methodB(color02);
13 Apple apple01 = new Apple(color01);
14 Apple apple02 = new Apple(color02);
15 Apple apple03 = apple01;
16 System.out.println(color01 == color02);
17 System.out.println(apple01 == apple02);
18 System.out.println(apple01.equals(apple02));
19 methodC(apple01);
20 methodD(apple02);
21 System.out.println(apple02.color);
22 System.out.println(apple03.color);
23 }
24 static String methodA(String color){
return(color.concat(“”));}
25 static void methodB(String color){color = “DEEP” color;}
26 static void methodC(Apple apple){apple.color = “GREEN”;}
27 static void methodD(Apple apple){apple = new Apple
(“GOLD”);}
28 } 問題(A):上述程式碼是否會產生編譯錯誤?
問題(B):若發生編譯錯誤應該如何修正或移除哪一段程式碼即可編譯成功?原因
為何?
問題(C):當程式編譯完成並執行java QC 後分別在程式碼的16、17、18、21、
22輸出的結果為何? 答案是:A:編譯錯誤.
B:
07 class GoldApple extends Apple{}
原因:由於GoldApple繼承於 Apple類別,而GoldApple會產生預設的建構子透過
super()父類別不具有任何參數的建構子,但父類別中並無任何相對應
的建構子因此發生編譯時期的錯誤.
C:
16 System.out.println(color01 == color02); =>true
17 System.out.println(apple01 == apple02); =>false
18 System.out.println(apple01.equals(apple02)); =>false
21 System.out.println(apple02.color); =>”RED”
22 System.out.println(apple03.color); =>”GREEN 在下對答案中的 18 行是false百思不得其解,請JAVA先進幫幫忙,謝謝
|
rogan321
高階會員 發表:21 回覆:307 積分:200 註冊:2003-05-15 發送簡訊給我 |
|
Komuro
一般會員 發表:27 回覆:46 積分:14 註冊:2004-02-19 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |