
1.面向對象
2.類與對象
3.三大特征
1.能夠了解面向對象的思想
2.能夠明确類與對象關系
3.能夠掌握類的定義格式
4.能夠掌握建立對象格式,并通路類中的成員
5.能夠完成手機類的練習
6.能夠了解對象的記憶體圖
7.能夠說出成員變量和局部變量的差別
Java語言是一種面向對象的程式設計語言,而面向對象思想是一種程式設計思想,我們在面向對象思想的指引下, 使用Java語言去設計、開發計算機程式。 這裡的對象泛指現實中一切事物,每種事物都具備自己的屬性和行為。面向對象思想就是在計算機程式設計過程中,參照現實中事物,将事物的屬性特征、行為特征抽象出來,描述成計算機事件的設計思想。 它差別于面向過程思想,強調的是通過調用對象的行為來實作功能,而不是自己一步一步的去操作實作。
舉例 洗衣服:
面向過程:把衣服脫下來-->找一個盆-->放點洗衣粉-->加點水-->浸泡10分鐘-->揉一揉-->清洗衣服-->擰幹-->晾
起來
面向對象:把衣服脫下來-->打開全自動洗衣機-->扔衣服-->按鈕-->晾起來
差別:
面向過程:強調步驟。
面向對象:強調對象,這裡的對象就是洗衣機。
面向對象思想是一種更符合我們思考習慣的思想
它可以将複雜的事情簡單化
并将我們從執行者變成了指揮者。
面向對象的語言中,包含了三大基本特征,即封裝、繼承和多态。
類:是一組相關屬性和行為的集合。可以看成是一類事物的模闆,使用事物的屬性特征和行為特征來描述該
類事物。
現實中,描述 一個事物
屬性:就是該事物的狀态資訊。
行為:就是該事物能夠做什麼
舉例:小貓。
屬性:名字、體重、年齡、顔色。
行為:走、跑、叫。
對象:是一類事物的具體展現。對象是類的一個執行個體(對象并不是找個女朋友),必然具備該類事物的屬性和行為。 現實中,一類事物的一個執行個體:一隻小貓。 舉例:一隻小貓。
屬性:tom、5kg、2 years、yellow。
行為:溜牆根走、蹦跶的跑、喵喵叫。
類是對一類事物的描述,是抽象的。
對象是一類事物的執行個體,是具體的。
類是對象的模闆,對象是類的實體。
現實世界的一類事物:
屬性:事物的狀态資訊。
行為:事物能夠做什麼。
Java中用class描述事物也是如此:
成員變量:對應事物的屬性
成員方法:對應事物的行為
類的定義格式
定義類:就是定義類的成員,包括成員變量和成員方法。
成員變量:和以前定義變量幾乎是一樣的。隻不過位置發生了改變。在類中,方法外。
成員方法:和以前定義方法幾乎是一樣的。隻不過把static去掉,static的作用在面向對象後面課程中再詳細
講解。
類定義的格式舉例
對象的使用格式
建立對象:
使用對象通路類中的成員:
對象的使用格式舉例:
成員變量的預設值
<col>
資料類型
預設值
基本類型
整數(byte,short,int,long)
浮點數(float,double)
0.0
字元(char)
'\u0000'
布爾(boolean)
false
引用類型
數組,類,接口
null
定義手機類:
定義測試類:
一個對象,調用一個方法記憶體圖
通過上圖,我們可以了解,在棧記憶體中運作的方法,遵循"先進後出,後進先出"的原則。變量p指向堆記憶體中的空間,尋找方法資訊,去執行該方法。但是,這裡依然有問題存在。建立多個對象時,如果每個對象内部都儲存一份方法資訊,這就非常浪費記憶體了,因為所有對象的方法資訊都是一樣的。那麼如何解決這個問題呢?請看如下圖解
兩個對象,調用同一方法記憶體圖
對象調用方法時,根據對象中方法标記(位址值),去類中尋找方法資訊。這樣哪怕是多個對象,方法資訊隻儲存一份,節約記憶體空間。
一個引用,作為參數傳遞到方法中記憶體圖
引用類型作為參數,傳遞的是位址值。
變量根據定義位置的不同,我們給變量起了不同的名字。如下圖所示:
在類中的位置不同
成員變量:類中,方法外
局部變量:方法中或者方法聲明上(形式參數)
作用範圍不一樣
成員變量:類中
局部變量:方法中
初始化值的不同
成員變量:有預設值
局部變量:沒有預設值。必須先定義,指派,最後使用
在記憶體中的位置不同
成員變量:堆記憶體
局部變量:棧記憶體
生命周期不同
成員變量:随着對象的建立而存在,随着對象的消失而消失
局部變量:随着方法的調用而存在,随着方法的調用完畢而消失
1.面向對象的特點
2.類和對象關系
3.對象的記憶體圖解