天天看點

【Java】面向對象思想

【Java】面向對象思想

🔎這裡是【Java】,關注我學習Java不迷路

👍如果對你有幫助,給部落客一個免費的點贊以示鼓勵

歡迎各位🔎點贊👍評論收藏⭐️

👀專欄介紹

【Java】 目前主要更新Java,一起學習一起進步。

👀本期介紹

本期主要介紹面向對象思想

文章目錄

目錄

​​👀專欄介紹​​

​​👀本期介紹​​

​​文章目錄​​

​​1. 面向對象思想概述​​

​​概述​​

​​舉例​​

​​特點​​

​​2. 類和對象​​

​​什麼是類​​

​​什麼是對象​​

​​類與對象的關系​​

​​3. 類的定義​​

​​事物與類的對比​​

​​類的定義格式​​

​​4. 對象的使用​​

​​對象的使用格式​​

​​成員變量的預設值​​

​​5. 類與對象的練習​​

​​6. 對象記憶體圖​​

​​一個對象,調用一個方法記憶體圖​​

​​兩個對象,調用同一方法記憶體圖​​

​​一個引用,作為參數傳遞到方法中記憶體圖​​

​​7. 成員變量和局部變量差別​​

1. 面向對象思想概述

概述

Java

語言是一種面向對象的程式設計語言,而面向對象思想是一種程式設計思想,我們在面向對象

思想的指引下,使用

Java

語言去設計、開發計算機程式。 這裡的

對象

泛指現實中一切事物,每種事物都具備自己的

屬性

行為

。面向對象思想就是在計算機程式設計過程中,參照現實中事物,将事物的屬性特征、行為特征抽象出來,描述成計算機事件的設計思想。 它差別于面向過程思想,強調的是通過調用對象的行為來實作功能,而不是自己一步一步的去操作實作。

舉例

洗衣服

:

面向過程:把衣服脫下來

-->

找一個盆

-->

放點洗衣粉

-->

加點水

-->

浸泡

10

分鐘

-->

揉一揉

-->

清洗衣服

-->

擰幹

-->

晾起來

面向對象:把衣服脫下來

-->

打開全自動洗衣機

-->

扔衣服

-->

按鈕

-->

晾起來

差別

:

面向過程:強調步驟。

面向對象:強調對象,這裡的對象就是洗衣機。

特點

面向對象思想是一種更符合我們思考習慣的思想,它可以将複雜的事情簡單化,并将我們從執行者變成了指揮者。

面向對象的語言中,包含了三大基本特征,即封裝、繼承和多态。

2. 類和對象

環顧周圍,你會發現很多對象,比如桌子,椅子,同學,老師等。桌椅屬于辦公用品,師生都是人類。那麼什麼是

類呢?什麼是對象呢?

什麼是類

:是一組相關

屬性

行為

的集合。可以看成是一類事物的模闆,使用事物的屬性特征和行為特征來描述該類事物。

現實中,描述一類事物:

屬性

:就是該事物的狀态資訊。

行為

:就是該事物能夠做什麼。

舉例:小貓。

屬性:名字、體重、年齡、顔色。

行為:走、跑、叫。

什麼是對象

對象

:是一類事物的具體展現。對象是類的一個

執行個體

(對象并不是找個女朋友),必然具備該類事物的屬性和行為。

現實中,一類事物的一個執行個體:一隻小貓。

舉例:一隻小貓。

屬性:

tom

5kg

2 years

yellow

行為:溜牆根走、蹦跶的跑、喵喵叫。

類與對象的關系

類是對一類事物的描述,是

抽象的

對象是一類事物的執行個體,是

具體的

類是對象的模闆,對象是類的實體

【Java】面向對象思想

3. 類的定義

事物與類的對比

現實世界的一類事物:

屬性

:事物的狀态資訊。

行為

:事物能夠做什麼。

Java 中用

class

描述事物也是如此:

成員變量

:對應事物的

屬性

成員方法

:對應事物的

行為

類的定義格式

【Java】面向對象思想

定義類

:就是定義類的成員,包括

成員變量

成員方法

成員變量

:和以前定義變量幾乎是一樣的。隻不過位置發生了改變。

在類中,方法外

成員方法

:和以前定義方法幾乎是一樣的。隻不過

static

去掉

static

的作用在面向對象後面課程

中再詳細

講解。

類的定義格式舉例:

【Java】面向對象思想
【Java】面向對象思想

4. 對象的使用

對象的使用格式

建立對象:

【Java】面向對象思想

使用對象通路類中的成員:

【Java】面向對象思想

 對象的使用格式舉例:

【Java】面向對象思想

成員變量的預設值

【Java】面向對象思想

5. 類與對象的練習

定義手機類:

【Java】面向對象思想

定義測試類:

【Java】面向對象思想
【Java】面向對象思想

6. 對象記憶體圖

一個對象,調用一個方法記憶體圖

【Java】面向對象思想

通過上圖,我們可以了解,在棧記憶體中運作的方法,遵循 " 先進後出,後進先出 " 的原則。變量 p

向堆記憶體中

的空間,尋找方法資訊,去執行該方法。

但是,這裡依然有問題存在。建立多個對象時,如果每個對象内部都儲存一份方法資訊,這就非常

浪費記憶體

了,因為所有對象的方法資訊都是一樣的。那麼如何解決這個問題呢?請看如下圖解。

兩個對象,調用同一方法記憶體圖

【Java】面向對象思想

對象調用方法時,根據對象中方法标記(位址值),去類中尋找方法資訊。這樣哪怕是多個對象,

方法資訊

隻儲存一份,節約記憶體空間。

一個引用,作為參數傳遞到方法中記憶體圖

【Java】面向對象思想

引用類型作為參數,傳遞的是位址值。

7. 成員變量和局部變量差別

變量根據定義 位置的不同

,我們給變量起了不同的名字。如下圖所示:

【Java】面向對象思想

在類中的位置不同 重點

成員變量:類中,方法外

局部變量:方法中或者方法聲明上 ( 形式參數 )

作用範圍不一樣 重點

成員變量:類中

局部變量:方法中

初始化值的不同 重點

成員變量:有預設值

局部變量:沒有預設值。必須先定義,指派,最後使用

在記憶體中的位置不同 了解

成員變量:堆記憶體

局部變量:棧記憶體

生命周期不同 了解

成員變量:随着對象的建立而存在,随着對象的消失而消失