Java物件導向——類與物件

今天你敲程式碼了嘛發表於2020-10-29

Java物件導向——類與物件

b站學習視訊以及筆記-尚矽谷_Java零基礎教程

java入門必備-適合初學者的全套完整版教程(宋紅康主講)

1.物件導向學習的三條主線:

  • Java類及類的成員:屬性、方法、構造器;程式碼塊、內部類
  • 2.物件導向的大特徵:封裝性、繼承性、多型性、(抽象性)
  • 3.其它關鍵字:this、super、static、final、abstract、interface、package、import等
  • “大處著眼,小處著手”

2.物件導向與程式導向(理解)

1.程式導向:強調的是功能行為,以函式為最小單位,考慮怎麼做。
2.物件導向:強調具備了功能的物件,以類/物件為最小單位,考慮誰來做。

舉例對比:人把大象裝進冰箱。

3.完成一個專案(或功能)的思路:

image-20201028232753611

4.物件導向中兩個重要的概念:

類:對一類事物的描述,是抽象的、概念上的定義
物件:是實際存在的該類事物的每個個體,因而也稱為例項(instance)

物件導向程式設計的重點是類的設計
設計類,就是設計類的成員。

二者的關係:

物件,是由類new出來的,派生出來的。

5.物件導向思想落地實現的規則一

  • 1.建立類,設計類的成員
  • 2.建立類的物件
  • 3.通過“物件.屬性”或“物件.方法”呼叫物件的結構

補充:幾個概念的使用說明

  • 屬性 = 成員變數 = field = 域、欄位
  • 方法 = 成員方法 = 函式 = method
  • 建立類的物件 = 類的例項化 = 例項化類

6.物件的建立與物件的記憶體解析

典型程式碼:

Person p1 = new Person();
Person p2 = new Person();
Person p3 = p1;//沒有新建立一個物件,共用一個堆空間中的物件實體。

說明:
如果建立了一個類的多個物件,則每個物件都獨立的擁有一套類的屬性。(非static的)
意味著:如果我們修改一個物件的屬性a,則不影響另外一個物件屬性a的值。

記憶體解析:

image-20201028232818695

物件陣列解析:

image-20201028232954820

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中的類的載入器和直譯器對生成的位元組碼檔案進行解釋執行。意味著,需要將位元組碼檔案對應的類載入到記憶體中,涉及到記憶體解析。

image-20201028234305729

JVM規範

虛擬機器棧,即為平時提到的棧結構。我們將區域性變數儲存在棧結構中,我們將new出來的結構(比如:陣列、物件)載入在堆空間中。補充:物件的屬性(非static的)載入在堆空間中。

方法區:類的載入資訊、常量池、靜態域

相關文章