對於事物的描述一般只關注2個方面java
一個是屬性,一個是行爲安全
只要明確該事物的屬性和行爲並定義在類中便可框架
對象 :其實就是該類事物實實在在存在的個體函數
類與對象之間的關係spa
類:事物的描述對象
對象 :該類事物的實例 。在java中經過new來建立的內存
描述小汽車作用域
分析get
1、屬性變量
輪胎數
顏色
2、行爲
運行
定義類其實就是在定義類中的成員
成員:
成員變量(定義在類中)-----------屬性
成員函數 -----------行爲
局部變量 :做用域 : 方法中,語句中
//在計算機中建立一個Car的實例 ;經過new關鍵字
//c 就是一個類類型的引用變量 ,指向了該類對象
Car c = new Car();
c.num = 5;
c.color = "bule";
c.show();
一旦產生一個對象,該對象必定就具有着該類所具有的內容
對象封裝的是一個事物當中所具有的特有數據(與同類對象的區別)
對象封裝的是數據,而不是封裝對象的屬性(屬性與數據的區別,數據是對屬性的賦值)
成員變量和局部變量的區別
1、成員變量
定義在類中,整個類中都有效
存在於堆內存的對象中
成員變量隨着對象的建立而存在,隨着對象的消失而消失
都有默認初始化值
2、局部變量
定義在函數、語句、局部代碼塊中,只在所屬的區域有效
存在於棧內存的方法中
隨着所屬區域的執行而存在,隨着所屬區域的結束而釋放
沒有初始化值,必需要賦值
誤區理解 :
成員變量 num :是說汽車這類事物,應該具有num的這個屬性
而c.num 是對該類的一個對象(實例) 對對象自身的num屬性進行賦值
是對 對象中的屬性進行賦值
成員變量和局部變量同名:
本身所屬的區域(棧)有,就不用出去找(堆)
對成員變量賦值就是顯示初始化
數據類型 變量名
C : 類類型變量確定指向的是對象,否則就爲null
Public static void show(Car c) 類類型變量只能接收的是對象(實例)
{
}
匿名對象
new Car( ).run( );
1、當對象對方法僅進行一次調用的時候,就能夠簡化爲匿名對象
2、匿名對象能夠做爲實際參數進行傳遞 show(new Car( ) );
確定會有一個類類型的引用變量來接收這個匿名對象
public static void show( Car c )
封裝
封裝 : 是指隱藏對象的屬性和實現細節 ,僅對外提供公共的訪問方式
好處
一、將變化隔離
二、便於使用
三、提升重用性
四、提升安全性
封裝的原則
1、將不須要對外提供的內容都隱藏起來
2、把屬性都隱藏,提供公共方法對其訪問
一旦有屬性 幾乎都隱藏 , 對外提供公共的訪問方法
對外提供方法的目的是 對屬性進行可控
private 私有 :是一個權限修飾符 ,用於修飾成員 ,(修飾不了局部)
私有的內容 只在本類中有效
經常使用
將成員變量私有化,對外提供對應的set get方法
對方法進行訪問。提升對數據訪問的安全性
用方法的目的是對數據進行可控(方法體內能夠對數據進行判斷)
注意 :私有僅僅是封裝的一種體現而已
筆記本 、手機 就是一個封裝體
java中最小的封裝體就是函數
類也是封裝體
框架也是封裝體
構造函數
特色
1、函數名與類名相同
2、不用定義返回值類型
3、沒有具體的返回值
做用
給對象進行初始化
注意
1、默認構造函數的特色
2、多個構造函數是以重載的形式存在的
構造函數在對象一建立的時候就運行了 ,用於給對象進行初始化
構造函數: 構建創造對象的時候就會馬上 調用的函數 ,做用 :是個建立的對象進行初始化
建立的對象都必需要經過構造函數初始化 ,對象不初始化絕對不能用
函數是封裝體,相同的函數名及參數列表,就是相同的函數,不關心函數體是否相同
一個類中若是沒有定義過構造函數,那麼該類中會有一個默認的空參數的構造函數
若是在類定義了指定的構造函數,那麼類中的默認構造函數就沒有了
構造函數和通常函數的區別
構造函數
對象一旦建立,就會馬上調用與之相對應的構造函數,對 對象進行初始化
對象建立時,會調用,只調用一次
通常函數
對象建立後,須要該函數功能時才調用
對象建立後,能夠被調用屢次