2015年1月11日 星期日

JAVA7-課程5

  星期日上課,來到第五次,這次的課程準備進入讓我困惑已久的「物件導向」。每次看著程式設計的書籍,這邊講得好抽象,那邊講得好深奧,而較簡單的程式碼卻無法體會「物件」是什麼!
  老師在進入這個單元前,一直灌輸我們一個觀念,就是存取修飾值如果是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.中午吃飯時,大大大師傅居然有抽獎活動耶!特獎、頭獎、貳獎:汽車...汽車...汽車...耶!因為很重要要說三次...

沒有留言:

張貼留言