黑馬程式設計師----java基礎之面向物件
------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a>、期待與您交流! ---------
面向物件的理解
面向物件是相對於面向過程而言的
面向物件和麵向過程都是一種思想
面向過程強調的是功能行為
面向物件是將功能封裝進物件,強調具備了功能的物件
面向物件是基於面向過程的.
取個例子來說,把大象放到冰箱裡:分三步,開啟冰箱---把大象發到冰箱---關上冰箱;這是面向過程的思想,強調的是過程,注重的是過程,注重的是過程中存在的行為(功能):開啟功能,儲存功能,關閉功能.把它轉變成物件應該怎麼做呢:我們可以很容易的想到,開啟,儲存和關閉都是冰箱的功能
,而我們操作的都是冰箱,所以我們可以將這些行為定義在冰箱當中,因為冰箱是實實在在存在的個體,所以我們可以把它看作是一個物件,而我們要在儲存事務時,只需要掉用冰箱的那些功能就行啦!
Java開發,總的來說就是找物件使用,沒有物件,就建立一個物件,基本就是:找物件,建立物件,使用物件.維護物件的關係.這幾個步驟,
類和物件的關係.
現實生活中的物件張三,李四
想要描述:提取物件中共性內容.對具體的抽象.
描述時:這些物件的共性有:姓名,年齡,性別,學習Java的功能.
對映到Java中,描述就是class定義的類.
具體物件就是對應Java在堆記憶體中用new建立的實體
類就是:對現實生活中事物的描述,描述這類事物的屬性和行為
物件:就是這類事物,實實在在存在的個體.
/*
需求:描述汽車(顏色,輪胎數).描述物件,就是描述這類事物的屬性和行為
屬性對應的是類中的變數,行為對應的是類中的函式(方法).
*/
class Car
{
//描述顏色
String color = "red";
//描述輪胎數
int num = 4;
//執行行為
public void run()
{
System.out.println(color+":::"+num);
}
}
class ArrayTest3
{
public static void main(String[] args)
//生產汽車.在Java中通過new操作符來完成
//其實就是在堆記憶體產生一個實體
Car c = new Car();//c就是一個類型別變數.記住,類型別變數指向物件
//需求:將已有的車改變成lanse指揮該物件做使用.在Java中,指揮方式是:物件.物件成員
c.color = "blue";
c.run();//blue 4;
Car c1 = new Car();
c1.run();//red 4;
}
}
成員變數和區域性變數
作用範圍
成員變數作用於整個類中
區域性變數作用於函式中,或者語句中
在記憶體的位置
成員變數:在堆記憶體中,因為物件的存在,而在記憶體中存在
區域性變數:存在棧記憶體中
匿名物件
匿名物件是物件的簡化形式
匿名物件的兩種使用情況
當對物件方法僅進行一次呼叫時
匿名物件可以作為實際引數進行傳遞
建構函式
建構函式的特點
函式名與內名相同
不用定義返回值型別
不可以寫return語句
建構函式的作用
給物件進行初始化
注意:
預設建構函式的特點:當一個類中沒有定義建構函式時,系統會預設給該類加一個空引數的建構函式,當在類中自定義了建構函式後,系統不會再給該類新增構造函數了.
多個建構函式是以過載的形式存在的
物件已建立就會呼叫與之對應的建構函式
建構函式和一般方法在寫法上不同,在執行上也不同
建構函式是在物件一建立就執行,給物件初始化
而一般方法是物件呼叫才執行,給物件新增物件具備的功能
一個物件建立,建構函式只執行一次
而一般方法可以被該物件呼叫多次
什麼時候定義建構函式呢?
當分析事物時,該事物存在具備一些特性或者行為,那麼將這些內容定義在建構函式中
構造程式碼塊
作用:給物件進行初始化
物件一建立就執行,而且優先於建構函式執行
和建構函式的區別
構造程式碼塊是給所有物件進行統一初始化
而建構函式是給對應的物件初始化
構造程式碼塊中定義的事不同物件共性的初始化內容
關鍵字:this
this:是用於區分區域性變數和成員變數同名的情況
this代表本類物件,代表它所在所屬物件的引用,也就是說,那個物件在呼叫this所在的函式.this就代表那個物件
this的應用:當定義類中功能時,該函式內部要用到呼叫該函式的物件時,這時用this表示這個物件
但凡本類功能內部使用了本類物件,都用this表示.
需求:給人定義一個用於比較年齡是否相同的功能.也就是是否是同齡人
this語句:用於建構函式之間進行互相呼叫
this語句只能定義在建構函式的第一行,因為初始化要先執行
關鍵字:static
用於修飾成員(成員變數和成員函式)
成員被static修飾後會隨著類的載入而載入,
因為static隨著類的載入而載入,,所以也會隨著類的消失而消失,說明它的生命週期最長
並且優先於物件存在,(靜態是先存在的,物件是後存在的)
被所有物件所共享,
可以直接被類名呼叫
使用靜態是要注意:靜態方法只能訪問靜態成員(非靜態方法既可以訪問靜態,也可以訪問非靜態)
靜態方法中不可以寫this,super關鍵字(因為靜態優先於物件存在,所以靜態方法中不可以存在this)
靜態有利有弊
利處: 對物件的共享資料進行單獨空間的儲存,節省空間.沒必要每一個物件中都儲存一份,還可以直接被類名呼叫
弊端: 生命週期過長,訪問出現侷限性.(靜態只能訪問靜態)
主函式是靜態的;它是一個特殊的函式,作為程式的入口,可以被jvm呼叫
主函式的定義
public:代表該函式的訪問許可權是最大的
static:代表主函式是隨著類的載入就已經存在
void:主函式沒有具體的返回值
main:不是關鍵字,但是是一個特殊的單詞,可以被Java識別.
(String[] args):函式的引數,引數型別是一個數組,該陣列中的元素是字串
主函式的格式是固定的: jvm識別
什麼時候定義靜態變數(類變數)呢?
當物件中出現共享資料時,該資料被靜態修飾
物件中的特有資料要定義成非靜態存在於堆記憶體中
什麼時候定義靜態函式呢?
當功能內部沒有訪問到非靜態資料(物件的特有資料)
該功能可以定義成靜態的
製作幫助文件
在類中定義作者,版本號,該類所具備的功能
在dos命令列中輸入
然後再e:\java\riji資料夾中就有了生成的幫助文件啦!然後點開index.html就行啦!