
🔎這裡是【Java】,關注我學習Java不迷路
👍如果對你有幫助,給部落客一個免費的點贊以示鼓勵
歡迎各位🔎點贊👍評論收藏⭐️
👀專欄介紹
【Java】 目前主要更新Java,一起學習一起進步。
👀本期介紹
本期主要介紹面向對象思想
文章目錄
目錄
👀專欄介紹
👀本期介紹
文章目錄
1. 面向對象思想概述
概述
舉例
特點
2. 類和對象
什麼是類
什麼是對象
類與對象的關系
3. 類的定義
事物與類的對比
類的定義格式
4. 對象的使用
對象的使用格式
成員變量的預設值
5. 類與對象的練習
6. 對象記憶體圖
一個對象,調用一個方法記憶體圖
兩個對象,調用同一方法記憶體圖
一個引用,作為參數傳遞到方法中記憶體圖
7. 成員變量和局部變量差別
1. 面向對象思想概述
概述
Java
語言是一種面向對象的程式設計語言,而面向對象思想是一種程式設計思想,我們在面向對象
思想的指引下,使用
Java
語言去設計、開發計算機程式。 這裡的
對象
泛指現實中一切事物,每種事物都具備自己的
屬性
和
行為
。面向對象思想就是在計算機程式設計過程中,參照現實中事物,将事物的屬性特征、行為特征抽象出來,描述成計算機事件的設計思想。 它差別于面向過程思想,強調的是通過調用對象的行為來實作功能,而不是自己一步一步的去操作實作。
舉例
洗衣服
:
面向過程:把衣服脫下來
-->
找一個盆
-->
放點洗衣粉
-->
加點水
-->
浸泡
10
分鐘
-->
揉一揉
-->
清洗衣服
-->
擰幹
-->
晾起來
面向對象:把衣服脫下來
-->
打開全自動洗衣機
-->
扔衣服
-->
按鈕
-->
晾起來
差別
:
面向過程:強調步驟。
面向對象:強調對象,這裡的對象就是洗衣機。
特點
面向對象思想是一種更符合我們思考習慣的思想,它可以将複雜的事情簡單化,并将我們從執行者變成了指揮者。
面向對象的語言中,包含了三大基本特征,即封裝、繼承和多态。
2. 類和對象
環顧周圍,你會發現很多對象,比如桌子,椅子,同學,老師等。桌椅屬于辦公用品,師生都是人類。那麼什麼是
類呢?什麼是對象呢?
什麼是類
類
:是一組相關
屬性
和
行為
的集合。可以看成是一類事物的模闆,使用事物的屬性特征和行為特征來描述該類事物。
現實中,描述一類事物:
屬性
:就是該事物的狀态資訊。
行為
:就是該事物能夠做什麼。
舉例:小貓。
屬性:名字、體重、年齡、顔色。
行為:走、跑、叫。
什麼是對象
對象
:是一類事物的具體展現。對象是類的一個
執行個體
(對象并不是找個女朋友),必然具備該類事物的屬性和行為。
現實中,一類事物的一個執行個體:一隻小貓。
舉例:一隻小貓。
屬性:
tom
、
5kg
、
2 years
、
yellow
。
行為:溜牆根走、蹦跶的跑、喵喵叫。
類與對象的關系
類是對一類事物的描述,是
抽象的
。
對象是一類事物的執行個體,是
具體的
。
類是對象的模闆,對象是類的實體
。
3. 類的定義
事物與類的對比
現實世界的一類事物:
屬性
:事物的狀态資訊。
行為
:事物能夠做什麼。
Java 中用
class
描述事物也是如此:
成員變量
:對應事物的
屬性
成員方法
:對應事物的
行為
類的定義格式
定義類
:就是定義類的成員,包括
成員變量
和
成員方法
。
成員變量
:和以前定義變量幾乎是一樣的。隻不過位置發生了改變。
在類中,方法外
。
成員方法
:和以前定義方法幾乎是一樣的。隻不過
把
static
去掉
,
static
的作用在面向對象後面課程
中再詳細
講解。
類的定義格式舉例:
4. 對象的使用
對象的使用格式
建立對象:
使用對象通路類中的成員:
對象的使用格式舉例:
成員變量的預設值
5. 類與對象的練習
定義手機類:
定義測試類:
6. 對象記憶體圖
一個對象,調用一個方法記憶體圖
通過上圖,我們可以了解,在棧記憶體中運作的方法,遵循 " 先進後出,後進先出 " 的原則。變量 p
指
向堆記憶體中
的空間,尋找方法資訊,去執行該方法。
但是,這裡依然有問題存在。建立多個對象時,如果每個對象内部都儲存一份方法資訊,這就非常
浪費記憶體
了,因為所有對象的方法資訊都是一樣的。那麼如何解決這個問題呢?請看如下圖解。
兩個對象,調用同一方法記憶體圖
對象調用方法時,根據對象中方法标記(位址值),去類中尋找方法資訊。這樣哪怕是多個對象,
方法資訊
隻儲存一份,節約記憶體空間。
一個引用,作為參數傳遞到方法中記憶體圖
引用類型作為參數,傳遞的是位址值。
7. 成員變量和局部變量差別
變量根據定義 位置的不同
,我們給變量起了不同的名字。如下圖所示:
在類中的位置不同 重點
成員變量:類中,方法外
局部變量:方法中或者方法聲明上 ( 形式參數 )
作用範圍不一樣 重點
成員變量:類中
局部變量:方法中
初始化值的不同 重點
成員變量:有預設值
局部變量:沒有預設值。必須先定義,指派,最後使用
在記憶體中的位置不同 了解
成員變量:堆記憶體
局部變量:棧記憶體
生命周期不同 了解
成員變量:随着對象的建立而存在,随着對象的消失而消失