精華筆記: static final常量:應用率高 必須聲明同時初始化 由類名打點來訪問,不能被改變 建議:常量所有字母都大寫,多個單詞用_分隔 編譯器在編譯時會將常量直接替換為具體的數,效率高 何時用:數據永遠不變,並且經常使用 抽象方法: 由abstract修飾 只有方法的定義,沒有具體的實現( ...
精華筆記:
- static final常量:應用率高
- 必須聲明同時初始化
- 由類名打點來訪問,不能被改變
- 建議:常量所有字母都大寫,多個單詞用_分隔
- 編譯器在編譯時會將常量直接替換為具體的數,效率高
- 何時用:數據永遠不變,並且經常使用
- 抽象方法:
- 由abstract修飾
- 只有方法的定義,沒有具體的實現(連{}都沒有)
- 抽象類:
- 由abstract修飾
- 包含抽象方法的類必須是抽象類
- 抽象類不能被實例化(new對象)
- 抽象類是需要被繼承的,派生類:
- 重寫抽象方法---------------變不完整為完整
- 也聲明為抽象類------------一般不這麼用
- 抽象類的意義:
- 封裝共有的屬性和行為-------------------代碼復用
- 為所有派生類提供統一的類型----------向上造型(代碼復用)
- 可以包含抽象方法,為所有派生類提供統一的入口(向上造型後能點出來),同時可以達到強制必須重寫的目的(相當於制定了一個標準)
補充:
-
設計規則:
-
將派生類所共有的屬性和行為,抽到超類中-------------抽共性
-
若派生類的行為(實現代碼)都一樣,設計為普通方法
若派生類的行為(實現代碼)都不一樣,設計為抽象方法
-
。。。。下周二講
-
-
抽象方法/抽象類的疑問:
- 抽象方法存在的意義是什麼?
- 保證當發生向上造型時,通過超類的引用能點出來那個方法-------保證能點出方法來
- 既然抽象方法的意義是保證能點出來,那為什麼不設計為普通方法呢?
- 設計為普通方法,意味著派生類可以重寫也可以不重寫,但設計為抽象方法,則可以強制派生類必須重寫--------達到強制派生類重寫,統一的目的
- 抽象方法存在的意義是什麼?
-
畫對象帶數:先找main
-
當創建(new)World對象時,就會分配World類中的成員變數(ship,submarines,mines,bombs)
-
frame.setVisible(true);時會自動調用paint()方法,在paint()中:當第1次用到Images類時,會將Images.class載入到方法區中,同時將那一堆靜態圖片分配到方法區中,同時自動執行靜態塊給圖片賦值
-
ship.paintImage(g);時會去調用paintImage()方法,方法中的this指的就是ship戰艦,方法中在判斷戰艦是否是活著的,若活著則獲取戰艦的圖片,用畫筆給畫到戰艦的x和y坐標上
submarines[i].paintImage(g);時會去調用paintImage()方法,假設submarines[i]為偵察潛艇對象,則方法中的this指的就是偵察潛艇,方法中在判斷偵察潛艇是否是活著的,若活著則獲取偵察潛艇的圖片,用畫筆畫到偵察潛艇的x和y坐標上 。假設submarines[i]為偵察潛艇對象......
-