『黑馬程序員』---java--面向對象--繼承+接口

----------- android培訓java培訓、java學習型技術博客、期待與您交流! ------------

java是一門面向對象的編程語言.其繼承爲面向對象中的一大亮點.


繼承extends

好處:1,提高代碼的複用性,簡化代碼.

好處:2,讓類與類之間產生了關係,有了這個關係,纔有了多態的特性.[注意:千萬不要爲了得到某個功能,而胡亂繼承,必須類與類之間有那麼一層所屬關係後纔可以繼承]


java語言中只支持單繼承(一個孩子只能有一個爸爸哦)

因爲,多繼承容易帶來安全隱患:當多個父類定義了相同的功能,當功能內容不同時,子類對象不確定要運行那個.[優化了C++的多繼承部分]但,java保留了這種機制,並用別一種體現來完成表示-------多實現(下面有詳細概述).


java支持多層繼承(說白了,就是祖孫三代)

如何使用一個繼承體系中的功能?

想要使用體系,先查閱體系父類的描述,因爲父類中定義的是該體系中的共性功能.同過瞭解共性功能,就可以知道該體系的基本功能.


在具體調用時,爲何要創建最子類的對象?

1,因爲有可能父類不能創建對象[抽象類和接口]

2,創建子類對象可以使用更多功能(就是說,除了父類中的基本功能外,還可以包括自己特有的)


子父類出現後,類成員的特點:

:變量:   如果子類中出現非私有的同名成員變量時,子類訪問本類中的變量,用this(this代表本類對象的引用)

子類訪問父類中的同名變量時,用super(super代表父類對象的引用)


子父類中的函數:   當子類出現和父類一模一樣的函數時,當子類對象調用該函數時,會運行子類函數的內容,如同父類的函數被覆蓋一樣.這種情況是函數的另一個特性,重寫(覆蓋);當子類繼承了父類,沿襲了父類的功能,到子類中,但是子類雖然具備該功能,但是功能的內容確和父類不一致,這時沒必要定義新功能,而是使用覆蓋特性,保留父類的功能定義,並重寫功能內容既可.

[有利於功能的擴展]注意:1,子類覆蓋父類,必須保證子類權限大於等於父類權限(就是函數前的修飾符public ,private,默認),否則編譯失敗

2,靜態只能覆蓋靜態

子父類中的構造函數:   在對子類對象進行初始化時,父類的構造函數也會運行(又兒子之前,要先有爸),這是因爲子類的構造函數默認第一行有一條隱士的語句super();

super():會訪問父類中的空參數的構造函數.而且子類中所有的構造函數默認第一行都是super();


子類一定要訪問父類的構造函數,爲什麼?

因爲,父類中的數據,子類可以直接獲取,所以子類對象在建立時,需要先查看父類是如何對這些數據進行初始化的.[既調之則全之]

如果訪問父類中指定的構造函數,可以通過手動定義super語句的方式來制定.


接口interface

特點:

1,接口中常見定義:常量,抽象方法

2,接口中的成員都是固定修飾符(對外暴露的規則)常量修飾符:public  static final     方法修飾符;public abstract,

3,接口是程序的功能擴展,可以來多實現

4,降低偶合性(下面擴展中有詳細說明)

5,類與接口之間是實現關係,而且類可以繼承一個類的同時還能實現多個接口


注意:   接口是不可以創建對象的,因爲有抽象方法.需要被子類實現(implements),子類對接口的抽象方法全都覆蓋後,子類纔可以實例化.否則子類也是個抽象類.

接口可以被多實現,也是對多繼承不支持的轉換形式.java支持多實現(因爲沒有方法體,都是抽象的方法,可以由子類任意定義

注意,接口與接口之間存在多繼承,但不能出現以下情況:

接口A中定義  public abstract int show();

接口B中定義public abstract boolean show();

接口C繼承A,B


final:最終,作爲一個修飾符

1,可以修飾,函數,變量

2,被final修飾的類不可以被繼承,爲了避免被繼承,被子類複寫功能

3,被final修飾的方法不可以被複寫

4,被final修飾的變量是一個常量,只能賦值一次.

5,內部類定義在類中的局部位置上時,只能訪問該局部被final修飾的局部變量


抽象類:當多個類中出現相同功能,但是功能主題不同.這時如果向上抽取,可以只抽取功能定義,而不抽取功能主題.

特點:

1,抽象方法一定在抽象類中

2,抽象方法和抽象類都必須被abstract關鍵字修飾

3,抽象類不可以用new創建對象,因爲,調用抽象方法沒有意義.他沒有方法體.

4,抽象類中的方法要被使用,必須由子類複寫其所有的抽象方法後,建立子類對象調用.如果子類只覆蓋了部分抽象方法,那麼該子類也是一個抽象類.

抽象類中的抽象函數,也是該事物的一個功能,需要明確出現,但是無法定義主題.



擴展-----聚集關係,來自軟件工程

 聚集是關聯的一種形式,代表兩個類之間的整體 / 局部關係。聚集暗示着整體在概念上處於比局部更高的一個級別,而關聯暗示兩個類在概念上位於相同的級別。在需求分析中,“包含”,“組成”,“分爲……部分”等經常設計成聚集關係。

    聚集的圖示方式爲,在表示關聯關係的直線末端加一個空心的小菱形,空心菱形緊挨着具有整體性質的類。聚集關係中可以出現重數,角色(僅用於表示部分的類)和限定詞,也可以給聚集關係命名。

    有兩種特殊聚集:共享聚集和組合聚集。

    共享聚集的特徵是:它的“部分”對象可以是多個任意“整體”對象的一部分。 比如,一個球隊(整體方)由多個球員(部分方)組成,但是一個球員還可能加入了多個球隊,球隊和球員之間的這種關係就是共享聚集。共享聚集關係可以通過聚集的重數反映出來,不必引入另外的圖標符號。如果作爲整體方的類的重數不是 1 , 那麼該聚集就是共享聚集。所示圖中從球員到球隊的關聯的重數爲多個 。




在組合聚集中,整體擁有各部分,部分與整體共存。如整體不存在了,部分也會隨之消失。 比如窗口由標題,外框和顯示區組成。 一旦窗口消亡,則各部分同時消失。 整體方的重數必須是零或 1 , 部分方的重數可取任意範圍值。

    組合聚集表示爲實心菱形,菱形指向整體部分。







發佈了30 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章