面向对象---类与对象
1 面向?qū)ο笏枷?/h1>
1.1 面向?qū)ο?/h2>
Java語言是一種面向?qū)ο蟮某绦蛟O(shè)計語言,而面向?qū)ο笏枷胧且环N程序設(shè)計思想,以對象為基礎(chǔ)完成各種操作,強調(diào)的是對象。它是基于面向過程的。
這里的對象泛指現(xiàn)實中一切事物,每種事物都具備自己的屬性和行為。面向?qū)ο笏枷刖褪窃谟嬎銠C(jī)程序設(shè)計過程中,參照現(xiàn)實中事物,將事物的屬性特征、行為特征抽象出來,描述成計算機(jī)事件的設(shè)計思想。
它區(qū)別于面向過程思想,強調(diào)的是通過調(diào)用對象的行為來實現(xiàn)功能,而不是自己一步一步的去操作實現(xiàn)。
2種編程思想的區(qū)別:
-
面向過程:強調(diào)步驟。
-
面向?qū)ο?#xff1a;強調(diào)對象。
洗衣服:
- 面向過程:把衣服脫下來–>找一個盆–>放點洗衣粉–>加點水–>浸泡10分鐘–>揉一揉–>清洗衣服–>擰干–>晾起來
- 面向?qū)ο?#xff1a;把衣服脫下來–>打開全自動洗衣機(jī)–>扔衣服–>按鈕–>晾起來
特點
面向?qū)ο笏枷胧且环N更符合我們思考習(xí)慣的思想,它可以將復(fù)雜的事情簡單化,并將我們從執(zhí)行者變成了指揮者。面向?qū)ο蟮恼Z言中,包含了三大基本特征,即封裝、繼承和多態(tài)。
1.2 類和對象
什么是類
- 類:是一組相關(guān)屬性和行為的集合??梢钥闯墒且活愂挛锏哪0?#xff0c;使用事物的屬性特征和行為特征來描述該類事物。
現(xiàn)實中,描述一類事物:
- 屬性:就是該事物的狀態(tài)信息。
- 行為:就是該事物能夠做什么。
什么是對象
- 對象:是一類事物的具體體現(xiàn)。對象是類的一個實例(對象并不是找個女朋友),必然具備該類事物的屬性和行為。
現(xiàn)實中,一類事物的一個實例:一只小貓。
舉例:一只小貓。
? 屬性:tom、5kg、2 years、yellow。
? 行為:溜墻根走、蹦跶的跑、喵喵叫。
類與對象的關(guān)系
- 類是對一類事物的描述,是抽象的。
- 對象是一類事物的實例,是具體的。
- 類是對象的模板,對象是類的實體。
1.3 類的定義
事物與類的對比
現(xiàn)實世界的一類事物:
? 屬性:事物的狀態(tài)信息。
? 行為:事物能夠做什么。
Java中用class描述事物也是如此:
? 成員變量:對應(yīng)事物的屬性
成員方法:對應(yīng)事物的行為
類的定義格式
public class ClassName {//成員變量//成員方法 }- 定義類:就是定義類的成員,包括成員變量和成員方法。
- 成員變量:和以前定義變量幾乎是一樣的。只不過位置發(fā)生了改變。在類中,方法外。
- 成員方法:只不過把static去掉
類的定義格式舉例:
public class Student {//成員變量String name;//姓名int age;//年齡//成員方法//學(xué)習(xí)的方法publicvoid study() {System.out.println("好好學(xué)習(xí),天天向上");}//吃飯的方法publicvoid eat() {System.out.println("學(xué)習(xí)餓了要吃飯");} }1.4 對象的使用
對象的使用格式
創(chuàng)建對象:
類名 對象名 = new 類名();使用對象訪問類中的成員:
對象名.成員變量; 對象名.成員方法();成員變量的默認(rèn)值
| 基本類型 | 整數(shù)(byte,short,int,long) | 0 |
| 浮點數(shù)(float,double) | 0.0 | |
| 字符(char) | ‘\u0000’ | |
| 布爾(boolean) | false | |
| 引用類型 | 數(shù)組,類,接口 | null |
1.5 對象內(nèi)存圖
一個對象,調(diào)用一個方法內(nèi)存圖
通過上圖,在棧內(nèi)存中運行的方法,遵循"先進(jìn)后出,后進(jìn)先出"的原則。變量p指向堆內(nèi)存中的空間,尋找方法信息,去執(zhí)行該方法。
但是,這里依然有問題存在。創(chuàng)建多個對象時,如果每個對象內(nèi)部都保存一份方法信息,這就非常浪費內(nèi)存了,因為所有對象的方法信息都是一樣的。
兩個對象,調(diào)用同一方法內(nèi)存圖
對象調(diào)用方法時,根據(jù)對象中方法標(biāo)記(地址值),去類中尋找方法信息。這樣哪怕是多個對象,方法信息只保存一份,節(jié)約內(nèi)存空間。
一個引用,作為參數(shù)傳遞到方法中內(nèi)存圖
引用數(shù)據(jù)類型作為方法的參數(shù),傳遞的是地址 引用數(shù)據(jù)類型作為方法的返回值,返回的是地址1.6 成員變量和局部變量區(qū)別
變量根據(jù)定義位置的不同,有不同的名字。如下圖所示:
- 在類中的位置不同 重點
- 成員變量:類中,方法外
- 局部變量:方法中或者方法聲明上(形式參數(shù))
- 作用范圍不一樣 重點
- 成員變量:類中
- 局部變量:方法中
- 初始化值的不同 重點
- 成員變量:有默認(rèn)值
- 局部變量:沒有默認(rèn)值。必須先定義,賦值,最后使用
- 在內(nèi)存中的位置不同 了解
- 成員變量:堆內(nèi)存
- 局部變量:棧內(nèi)存
- 生命周期不同 了解
- 成員變量:隨著對象的創(chuàng)建而存在,隨著對象的消失而消失
- 局部變量:隨著方法的調(diào)用而存在,隨著方法的調(diào)用完畢而消失
總結(jié)
以上是生活随笔為你收集整理的面向对象---类与对象的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。