面向對象基礎

1. 三大特徵

1.1 封裝

1.2 繼承(extends)

1.2.1 父類

1.2.2 子類

1.子類在同一個包下面可以範文父類除了私有private修飾的全部屬性和方法java

2.在不一樣包下面,子類對象只能訪問public修飾的屬性和方法數組

3.在子類內部,若是不一樣包的狀況下,能夠訪問protected修飾的屬性和方法,可是不能訪問默認的訪問修飾符修飾的屬性和方法jvm

4.子類在初始化的時候會先調用父類的默認不帶參數構造器,若是沒有,就會報錯,咱們只有人爲的修改ide

(1).將父類添加一個無參數的構造器函數

(2).在子類構造器中手動使用super()聲明調用哪一個父類的構造器this

1.3 多態

2. 類

2.1屬性,成員變量,全局變量

當對象初始化以後,成員變量就會有初始值spa

String null 整型 0 浮點型 0.0 boolean false char (char)0對象

局部變量繼承

1.定義的位置不同 局部變量:在方法的內部 成員變量:在方法的外部,直接寫在類當中接口

2.做用範圍不同 局部變量:只有方法當中纔可使用,出了方法就不能再用 成員變量:整個類全均可以通用。

3.默認值不同 局部變量:沒有默認值,若是想要使用,必須手動進行賦值 成員變量:若是沒有賦值,會有默認值,規則和數組同樣

4.內存的位置不同 局部變量:位於棧內存 成員變量,位於堆內存。

5.生命週期不同 局部變量:隨着方法進棧而誕生,隨着方法出棧而死亡。 成員變量:隨着對象建立而誕生,隨着對象被垃圾回收而消失。

2.2 行爲,動做,函數,方法

全部和動做相關的,都應該放入到方法中

2.3經過類建立對象 new

3. 對象

對象是類的實例

也都具備屬性和方法

對象都是屬於某個類

一切皆對象

注意:對象是 new XXX(),而不是具體的哪一個名字,名字只是一個引用

3.1對象數組

Book [] books = new Book[50];

4.重要的知識點

4.1 成員變量與局部變量的區別

The local variable type may not have been initialized 局部變量尚未被賦值

成員變量當對象初始化的時候會自動給上初始值

局部變量不會自動給初始值

若是要給成員變量賦初始值,就只能寫在一行,不能再另一行從新賦值

4.2 重載(overload)

就是爲了少寫方法名,一樣的方法名,只要參數不同,就能夠執行不一樣的操做

在同一個類中

方法名同樣

參數不同 1.參數類型不同 2.參數個數不同 3.參數的順序不同(不一樣類型的順序)

4.3 重寫(override)

1.繼承

2.子類重寫父類的方法

3.方法名同樣

4.參數類型,參數個數同樣

5.返回值同樣

6.注意父類private修飾的方法,子類不能重寫

7.子類重寫方法的訪問修飾符可見度,必須必父類方法的訪問修飾符可見度高

8.注意:若是隻是方法名同樣,參數不同,這個樣子是一個子類的重載而已

4.4 構造方法(構造器,構造函數)

構造器: 構造器必須和當前的類名相同,所以構造器不能繼承!

1.每一個類都默認有構造器

2.默認構造方法就是一個無參數的,沒有任何函數體的方法

3.本身手動寫構造方法

4.構造方法格式: 訪問修飾符 類名([參數...參數]){}

5.構造方法能夠重載

6.若是咱們手動寫了一個帶參數的構造器,會自動的覆蓋系統自帶的默認構造器

7.習慣:若是手動添加了一個帶參數的構造器,最好寫一個無參數的構造器

注意: 在new子集的時候會先調用父集的無參數的構造器,帶參數的構造器不會自動調用

4.5 javabean

全部的屬性都是private

爲每一個屬性創建setter和getter方法 (快捷鍵:shift + alt + s)

這個其實就是爲了之後裝數據用的一個類

4.6 對象轉型

向上轉型

向下轉型

轉型須要的條件:

1.繼承關係

2.要有相互引用的關係

3.查看內存圖形

5. 關鍵字

5.1 this

表明當前對象自己

有時候須要把當前調用對象進行傳遞,那麼就可使用this替代當前調用對象

在構造器中可使用this([參數])調用本類的其餘構造器

5.2 super

指代父類

super() 調用父類的構造器

super()若是放在子類中調用,只能放在子類構造器代碼的第一行

5.3 new

只要使用new關鍵字,就是建立一個新的對象

要注意一個問題.不要以爲有時候參數須要一個對象,就直接new 一個對象傳過去

5.4 static

1.靜態的屬性和靜態的方法屬於整個類

2.靜態的值只有一個(基本數據類型能夠看出此特色)

3.靜態的值只會初始化一次(引用數據類型)

4.靜態屬性,方法或者靜態塊會在jvm加載的時候就加載

5.靜態變量不能加在方法裏面

6.靜態方法不能重寫

通常狀況下,靜態的常量屬性,咱們通常寫爲 public static final 數據類型 大寫常量名 = 值

5.5 instanceof

判斷某個對象是否是某一個類型

5.6 final

1.能夠用來修飾變量,若是修飾變量,這個變量咱們就稱之爲常量,值不能被修改,並且常量必須賦初始值,通常狀況下,常量咱們會定義爲 public static final 數據類型 大寫常量名 = 值

2.若是final修飾方法,表示這個方法不能被重寫(實現)

3.若是final修飾類,表示這個類不能被繼承

5.7 Object

全部類的父類

6 .類和類的關係

組合(has-a):一個類是另外一個類的屬性

依賴(user-a):一個類是另一個類方法的參數

7 .抽象類(abstract)

1.抽象方法必定在抽象類中

2.抽象類和抽象方法確定是被abstract修飾的

3.抽象類不能夠用new關鍵字實例化,實例化一個抽象類沒有任何意義

4.若是必定要用抽象類,那麼可使用多態的方式

5.雖然抽象類不能實例化,可是也是有構造器的

6.抽象方法不能被private修飾

7.抽象方法不能被static修飾

總結:1.抽象類就是用來被繼承的 2.抽象方法就是用來被實現的 3.實現多態

8. 接口(interface implements)

1.接口中的變量所有是靜態常量

2.接口中的方法默認是抽象方法

3.JDK1.8以後能夠手動聲明默認方法和靜態方法

4.接口能夠多實現,一個類能夠實現多個接口

5.接口與接口之間使用extends

6.一個子類能夠繼承一個父類,實現多個接口

相關文章
相關標籤/搜索