1.面向對象學習的三條主線:
- 1.Java類及類的成員:屬性、方法、構造器;代碼塊、內部類
- 2.面向對象的大特征:封裝性、繼承性、多態性、(抽象性)
- 3.其它關鍵字:this、super、static、final、abstract、interface、package、import等
- “大處著眼,小處著手”
2.面向對象與面向過程(理解)
1.面向過程:強調的是功能行為,以函數為最小單位,考慮怎么做。
2.面向對象:強調具備了功能的對象,以類/對象為最小單位,考慮誰來做。
舉例對比:人把大象裝進冰箱。
3.完成一個項目(或功能)的思路:
4.面向對象中兩個重要的概念:
類:對一類事物的描述,是抽象的、概念上的定義
對象:是實際存在的該類事物的每個個體,因而也稱為實例(instance)
面向對象程序設計的重點是類的設計
設計類,就是設計類的成員。
二者的關系:
對象,是由類new出來的,派生出來的。
5.面向對象思想落地實現的規則一
- 1.創建類,設計類的成員
- 2.創建類的對象
- 3.通過“對象.屬性”或“對象.方法”調用對象的結構
補充:幾個概念的使用說明
- 屬性 = 成員變量 = field = 域、字段
- 方法 = 成員方法 = 函數 = method
- 創建類的對象 = 類的實例化 = 實例化類
6.對象的創建與對象的內存解析
典型代碼:
Person p1 = new Person();
Person p2 = new Person();
Person p3 = p1;//沒有新創建一個對象,共用一個堆空間中的對象實體。
說明:
如果創建了一個類的多個對象,則每個對象都獨立的擁有一套類的屬性。(非static的)
意味著:如果我們修改一個對象的屬性a,則不影響另外一個對象屬性a的值。
內存解析:
7.匿名對象:我們創建的對象,沒顯式的賦給一個變量名。即為匿名對象
特點:匿名對象只能調用一次。
舉例:
new Phone().sendEmail();
new Phone().playGame();
new Phone().price = 1999;new Phone().showPrice();//0.0
應用場景:
PhoneMall mall = new PhoneMall();
//匿名對象的使用
mall.show(new Phone());
其中,
class PhoneMall{
public void show(Phone phone){
phone.sendEmail();
phone.playGame();
}
}
8.理解"萬事萬物皆對象"
1.在Java語言范疇中,我們都將功能、結構等封裝到類中,通過類的實例化,來調用具體的功能結構
-
>Scanner,String等
-
>文件:File
-
>網絡資源:URL
2.涉及到Java語言與前端Html、后端的數據庫交互時,前后端的結構在Java層面交互時,都體現為類、對象。
9、jvm內存結構
編譯完源程序以后,生成一個或多個字節碼文件。
我們使用JVM中的類的加載器和解釋器對生成的字節碼文件進行解釋運行。意味著,需要將字節碼文件對應的類加載到內存中,涉及到內存解析。
《JVM規范》
虛擬機棧,即為平時提到的棧結構。我們將局部變量存儲在棧結構中
堆,我們將new出來的結構(比如:數組、對象)加載在對空間中。補充:對象的屬性(非static的)加載在堆空間中。
方法區:類的加載信息、常量池、靜態域