湯老師在進入這個單元前,一直灌輸我們一個觀念,就是存取修飾值如果是static,那JVM會自動載入記憶體;所以我們學物件導向是在學non-static的使用方式,因為那些程式碼必須由程式設計師主動提出載入記憶體。
Method Overloading 是在使用物件時,必須學會的一個觀念。Overloading(多載、同名異式):同名的副程式有多種使用方式,例如白板筆有多種顏色、螺絲起子有一字與十字的差別。
※語言只要不支援物件導向,就沒有多載。
Method 呼叫時的規則:
以下用程式探討這些規則的正確性。
♠1.方法名稱與傳遞的參數值之型別、個數、順序,選擇適當的方法:
♠2.若參數值為基本資料型別,就根據promotion(晉升)原則做基礎對應(byte->short(char)->int->long->float->double):
當輸入method3(10,20)會有錯誤:
ambiguous混淆...程式會分不清楚使用哪個,因為基本資料型別會promotion(晉升),導致兩個method3都可以使用。
♠4.試著用AutoBoxing/AutounBoxing來對應:
當輸入obj.method2(10L,20L);
obj.method2(10F,20F);
會出現錯誤。沒有適合的方法...
♠3.若參數值為參考型別,則以「多型」原則做比對:
Overloading很重要,因為JAVA的API裡頭有很多overloading的method。http://docs.oracle.com/javase/7/docs/api/
Constructor Method(建構子方法),是用來設定初值,且載入記憶體使用完這些建構子後,就會釋放。
當建立一個類別時,JVM會建立一個隱藏變數this,紀錄著這個類別的位址。在使用constructor method時,可以使用這個隱藏變數this,增加程式的可塑性。
♠測試建構子的使用方式:
湯老師的講解:
(最喜歡聽程式碼與記憶體之間的關係)
♠建構子方法的運用~類別中的類別變數:
湯老師的講解:
(最喜歡聽程式碼與記憶體之間的關係)
另一個題目的講解:
♠回家功課:
後記:
1.程式越學越發現自己的能力很薄弱。有太多東西可以學習的!學無止境!
2.下星期講解encapsulation(封裝)的概念,物件導向內部設計的方法之一。
3.多載有缺點!當使用者給的參數個數有很多種類時,1個、2個、3個、...、15個、...100個參數時,就要寫100個副程式...;但可以用變動式參數解決。
4.屬性變數與陣列,JAVA會自動給初值;
全域變數與區塊變數,JAVA不給初值,由程式設計師主動給予。
5.JAVA產生的任何class都可以反組譯,所以不安全。
6.中午吃飯時,大大大師傅居然有抽獎活動耶!特獎、頭獎、貳獎:汽車...汽車...汽車...耶!因為很重要要說三次...
沒有留言:
張貼留言