伊莉討論區

標題: 有關JAVA在NEW時候的觀念 [打印本頁]

作者: b2581167    時間: 2018-5-18 03:01 PM     標題: 有關JAVA在NEW時候的觀念

提示: 作者被禁止或刪除 內容自動屏蔽
作者: kwj    時間: 2018-5-19 10:10 AM

本帖最後由 kwj 於 2018-5-19 11:33 AM 編輯

A2 text1; 這樣的宣告,只是宣告有一個變數
但是這個變數還沒有真正地產生 instance,要透過 new 的指令來幫他在記憶體中產生 instance。
所以雖然 text1 是可以呼叫 AAA(),但因為你還沒真正地建立這個物件,所以想要呼叫自然會出現錯誤。
  1. A2 text1 = new A2();
  2. text1.AAA();

  3. A text2 = new A2();
  4. text2.AAA();
複製代碼

作者: johnwanz    時間: 2018-5-22 09:37 AM

你要從介面的角度去想.

A text2 = new A2();
有一個變數是A型別, A是一個介面, 所以text2只能使用一個函式 AAA();
text2, 實際的變數本身, 是A2型別. 所以, 其包含了A2, 也就有了B, 就實作了A.
只是因為text2的宣告為A, 所以使用text2時, 要以A來看. 而A只看得到AAA().

text1的問題就只是尚未產生Instance. new一個就好了.

Java也是有指標的概念, 只是沒有定義指標型別出來, 用法還是有.
作者: mnbhjk2    時間: 2018-5-31 08:09 AM

Java中的New是為一個Class建立一個Instance跟C++中建立一個Instance一樣範例如下:
Java:
Aclass a = new Aclass();
C++:
Aclass a();

在Java中嚴格來說沒有指標,要說指標的話就是宣告變數
Aclass a = new Aclass();
Aclass b = null;
a = b;
a.hashCode() == b.hashCode()

.hashCode()是extends from Object中預設的func,裡面產生的文字基本上是記憶體位置,但不是真的記憶體位置因為被轉碼過了




歡迎光臨 伊莉討論區 (http://garyya16.eyny.com/) Powered by Discuz!