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