黑馬程式設計師 java程式設計之面向物件學習筆記
以前學習過C語言,C語言是面向過程,裡面功能的實現都是由呼叫一個個的
函式來完成的,而java是面向物件的程式語言,它有以下幾個特點:
1,java中講很多的資料都封裝在類裡面,再通過類來建立實體物件,這樣能
將一個比較複雜的事情簡單化;
2,以前C語言中,是編寫一個個的函式來實現相應的功能,而java中是面向物件
進行程式設計,是將以前過程中的執行者變成了指揮者;
3,面向物件的思想更加的符合人們思考習慣的一種思想。
比如人有姓名,有年齡,這些是人這個事物的屬性,人會說話,這個是人的行為。
使用面向物件的思想,我們可以將人的這些屬性和行為進行封裝。
class person
{
String name;
int age;
public void person(String name,int age)
{
this.name = name;
this.age = age;
}
public void talk()
{
System.out.println("talk");
}
}
通過類我們就可以對人進行例項化:
person p1 = new person("張三",10);
p1.talk();
這樣我們就將人通過面向物件的思想進行了封裝。
在java中,將記憶體分成了五個部分:
1,暫存器區
2,本地方法區
3,方法區
4,棧(棧中主要存放就是函式和一些區域性變數)
5,堆(堆中主要存放的就是物件包括陣列)
當一個物件被建立後,會子啊堆中佔據一塊儲存空間,並會將這部分空間的首地址值賦給
該物件名,物件名是存放在棧中。
一個類中的成員包括成員變數(其實對應的是事物的屬性)和成員方法(事物所具備的行為)。
成員變數和區域性變數的區別:
1,成員變數是一個類的成員,是存在於類中,而區域性變數是被定義在函式中或區域性程式碼塊中;
2,成員變數是當物件被建立後存在於堆記憶體中,而區域性變數是存在於棧中的;
3,成員變數是隨著物件的建立而出現,隨著物件的消失而消失,區域性變數是作用於函式中的{}
中,從被定義後就存在棧中,當程式執行到}時就會被釋放。
4,成員變數當物件被建立後在堆中都有預設的初始化值,而區域性變數是沒有預設的初始化值的。
匿名物件:其實就是一個沒有起名字的物件.
特點:1,當物件中的方法只被呼叫一次時,可以建立匿名物件;
2,匿名物件可以作為引數進行傳遞。
一般類中的成員變數都用private來修飾,這是因為java是考慮到安全性的問題,假如用public來
修飾,那麼除了本類以外的其他方法也可以對其直接賦值,那麼這樣就由可能出現一個人的年齡被
賦值成了-10歲,但實際中是不存在-10歲的年齡的,所成員變數用private修飾後,只能在本類中的
方法所呼叫,為了讓其他類也能使用這些成員變數,類中一般會提供一個公共的訪問介面。
class person
{
private String name;
//private int age;
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void talk()
{
System.out.println("talk");
}
}
上面程式碼中函式setName()和getName()就是提供的公共訪問的方法。
建構函式:是給該類建立的物件進行初始化的。
一個類中可以有一個或多個建構函式,但是他們傳遞的引數在數量和型別上不同,
其實這也是函式過載的一個案例。
每一個類都有一個預設的建構函式。
this關鍵字是代表的當前物件。
static關鍵字:用來修飾變數和函式。
被static修飾的資料是共享資料,它是優先於物件存在的。
被static修飾的成員可以直接被類名呼叫。
靜態的方法只能訪問靜態的成員,不能訪問非靜態成員。
靜態方法中不能使用this,super等關鍵字,this表示的是一個物件,而靜態方法
中呼叫this是物件可能還沒被建立。
那什麼時候使用static呢?
1,成員變數:如果成員變數是一個共享的,是共有資料,那麼可以定義成靜態變數。
如果該成員變數是特有資料,那麼就不能定義成靜態。
2,成員函式:方法中有沒有呼叫特有資料。如果沒有就可以定義成靜態方法。
成員變數和靜態變數的區別:
1,成員變數是物件的特有資料,
靜態變數是共享的資料;
2,成員變數是隨著物件的建立而存在,
靜態變數是優先於物件存在的,是隨著類的載入就出現了,
3,成員變數當物件被建立後儲存在堆中,
靜態變數是儲存的在方法區記憶體中,
4,成員變數只有當物件被建立後被物件所呼叫,
靜態變數可以直接被類名呼叫,也可以被物件呼叫。
----------------------
相關推薦
黑馬程式設計師 java程式設計之面向物件學習筆記
---------------------- ASP.Net+Unity開發、.Net培訓、期待與您交流! ----------------------面向物件:以前學習過C語言,C語言是面向過程,裡面功能的實現都是由呼叫一個個的函式來完成的,而java是面向物件的程式語
黑馬程式設計師 java程式設計之面向物件學習筆記總結
---------------------- ASP.Net+Unity開發、.Net培訓、期待與您交流! ---------------------- 繼承: 在java中,在我們要對一個事物進行封裝時,發現有某一個類的特性和要封裝的這個 類的特性相同,而我們可以在這個
黑馬程式設計師----Java基礎之面向物件(最終篇)
------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g
黑馬程式設計師----Java基礎之面向物件(封裝 繼承 多型)(二)
------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g
黑馬程式設計師----Java基礎之面向物件(封裝 繼承 多型)
------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g
黑馬程式設計師----java基礎之面向物件
------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g
5--黑馬程式設計師--技術總結之面向物件
、期待與您交流! ---------------------- 一.什麼是面向物件? 1.面向物件的定義 面向物件是一種對現實世界理解和抽象的方法,是計算機程式設計技術發展到一定階段後的產物。早期的計算機程式設計是基於面向過程
黑馬程式設計師——OC語言基礎——面向物件三大特性之多型
繼前兩篇博文梳理了一下我對OC中面向物件三大特性的封裝、繼承之後。最重要也是最不容易理解的多型概念終於到來。 個人認為多型在三大特性中是最為重要的,但是由於它的概念性不容易用語言描述清楚,所以我還是想引用視訊教程中老師說的那句經典。 多型的實質就是: 父類的指標 指向了
黑馬程式設計師----JAVA基礎之GUI視覺化程式設計與列舉&網路程式設計
------ android培訓、java培訓、期待與您交流! ---------- 一、GUI視覺化程式設計 1. GUI視覺化程式設計是什麼? 就是讓介
黑馬程式設計師----Java基礎之反射
------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g
黑馬程式設計師----Java基礎之GUI
------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g
黑馬程式設計師----Java基礎之IO包中其它類
------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g
黑馬程式設計師----Java基礎之集合類(一)
------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g
黑馬程式設計師----Java基礎之String類
------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g
黑馬程式設計師----Java基礎之多執行緒
------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g
黑馬程式設計師——Java基礎之函式與陣列
------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g
黑馬程式設計師——java基礎之string及集合
<span style="font-family:SimSun;font-size:18px;">class TreeSetDemo { public static void main(String[] args) { TreeSet ts = new TreeSet(); ts.
黑馬程式設計師—Java程式設計異常知識總結
------- android培訓、java培訓、期待與您交流! ---------- -Java面向物件程式設計知識點總結。 一:內部類。 將一個類定義在另一個類的裡面,就稱該類為內部類。 1.內部類的特點:1.內部類可以直接訪問外部類的成員,包括私有成員。
黑馬程式設計師--JAVA基礎之IO流
一 IO流的三種分類方式: 1.按照流向來分: 輸入流:只能從中讀取位元組資料,不能向其寫出資料 輸出流:只能向其寫入位元組資料,不能從中讀取資料 2.按照流所處理的資料型別劃分:可分為: 位元組流:用於處理位元組
黑馬程式設計師——網路程式設計之TCP協議
TCP協議案例 /* * 需求: * 服務端接收資料並寫入文字檔案,寫入完畢後提示客戶端檔案上傳完畢 * 用執行緒實現伺服器端能夠同時接收多個客戶端的訪問 */建立伺服器接收檔案的執行緒