問題連結
A1:會產生錯誤,這行指令做的只是 宣告20格存放Data的指標變數 而已
Date[ ] List = new Data[20];
for(int i = 0; i< holidaylist.length ; i++)
List[i] = new Data( );
加上這些動作之後,才是真正的宣告20格存放Data的資料!
-----------------------------------------------------------------------------------------------------
A2:有錯誤訊息,無法編譯,原因:
class Data
{
private char word = '1';
public static char getword()
{
return word;
}
}
getword()是用static宣告的,所以在編譯完了之後,執行時會直接跟記憶體要一個位置來固定存放,因此會從一開始就存在這個方法(method),但是現在word沒有用static宣告,因此記憶體那邊word是不存在的,所以getword()就無法回傳word出去了,因此只要宣告word是static就可以解決了。↓↓↓↓↓↓↓↓↓↓↓↓
private static char word = '1';
就像是你要 (丟棒球) 卻沒有 (棒球) 這整件事就無法成立一樣
-----------------------------------------------------------------------------------------------------
A3:錯誤訊息,無法編譯,原因:
OuterClass D = new OuterClass("KK");
InnerClass C = new InnerClass();
InnerClass是附屬於OuterClass的內部類別,直接在OuterClass以外的class宣告是不被允許的。必須用以下寫法
OuterClass D = new OuterClass("KK");
OuterClass.InnerClass C = D.new InnerClass();
先建立好OuterClass的物件,在以此物件為基礎建立。
這寫法建立在InnerClass是public的情況下
※Inner Class
特點:
1.使用時仍需要new一個
2.能夠直接使用外圍類別(OuterClass)的變數
優點:
1.直接存取外部類別的私用(private)成員
-----------------------------------------------------------------------------------------------------
沒有留言:
張貼留言