java物件導向(4)

釋懷355發表於2014-06-14
關鍵字final
最終。作為一個修飾符,
1,可以修飾類,函式,變數。
2,被final修飾的類不可以被繼承。為了避免被繼承,被子類複寫功能。
3,被final修飾的方法不可以被複寫。
4,被final修飾的變數是一個常量只能賦值一次,既可以修飾成員變數,有可以修飾區域性變數。
    當在描述事物時,一些資料的出現值是固定的,那麼這時為了增強閱讀性,都給這些值起個名字。方便於閱讀。
    而這個值不需要改變,所以加上final修飾。作為常量:常量的書寫規範所有字母都大寫,如果由多個單片語成。單詞間透過_連線。
5,內部類定義在類中的區域性位置上時,只能訪問該區域性被final修飾的區域性變數

抽象類
當多個類中出現相同功能,但是功能主體不同,
這是可以進行向上抽取。這時,只抽取功能定義,而不抽取功能主體。

抽象:看不懂。

抽象類的特點:
1,抽象方法一定在抽象類中。
2,抽象方法和抽象類都必須被abstract關鍵字修飾。
3,抽象類不可以用new建立物件。因為呼叫抽象方法沒意義。
4,抽象類中的抽象方法要被使用,必須由子類複寫起所有的抽象方法後,建立子類物件呼叫。
    如果子類只覆蓋了部分抽象方法,那麼該子類還是一個抽象類。


抽象類和一般類沒有太大的不同。
該如何描述事物,就如何描述事物,只不過,該事物出現了一些看不懂的東西。
這些不確定的部分,也是該事物的功能,需要明確出現。但是無法定義主體。
透過抽象方法來表示。

抽象類比一般類多個了抽象函式。就是在類中可以定義抽象方法。
抽象類不可以例項化。

特殊:抽象類中可以不定義抽象方法,這樣做僅僅是不讓該類建立物件。

練習:
abstract 關鍵字,和哪些關鍵字不能共存。
final:被final修飾的類不能有子類。而被abstract修飾的類一定是一個父類。
private: 抽象類中的私有的抽象方法,不被子類所知,就無法被複寫。
        而抽象方法出現的就是需要被複寫。
static:如果static可以修飾抽象方法,那麼連物件都省了,直接類名呼叫就可以了。
        可是抽象方法執行沒意義。

抽象類中是否有建構函式?
有,抽象類是一個父類,要給子類提供例項的初始化。

介面
介面:初期理解,可以認為是一個特殊的抽象類
    當抽象類中的方法都是抽象的,那麼該類可以透過介面的形式來表示。
class用於定義類
interface 用於定義介面。

介面定義時,格式特點:
1,介面中常見定義:常量,抽象方法。
2,介面中的成員都有固定修飾符。
    常量:public static final
    方法:public abstract
記住:介面中的成員都是public的。


介面:是不可以建立物件的,因為有抽象方法。
需要被子類實現,子類對介面中的抽象方法全都覆蓋後,子類才可以例項化。
否則子類是一個抽象類。

介面可以被類多實現,也是對多繼承不支援的轉換形式。java支援多實現。

介面特點:
介面是對外暴露的規則
介面是程式的功能擴充套件
介面可以用來多實現
類與介面之間是實現關係,而且類可以繼承一個類的同時實現多個介面
介面與介面之間可以有繼承關係

多型
可以理解為事物存在的多種體現形態
1.多型的體現
   父類的引用指向了自己的子類物件
   父類的引用也可以接收自己的子類物件
2.多型的前提
   必須是類與類之間有關係。要麼繼承,要麼實現。通常還有一個前提:存在覆蓋
3.多型的好處
  多型的出現大大的提高了程式的擴充套件性
4.多型的弊端
   提高了擴充套件性,但是隻能使用父類的引用訪問父類中的成員
5.多型的應用


在多型中成員函式的特點:
在編譯時期:參閱引用型變數所屬的類中是否有呼叫的方法。如果有,編譯透過,如果沒有編譯失敗。
在執行時期:參閱物件所屬的類中是否有呼叫的方法。
簡單總結就是:成員函式在多型呼叫時,編譯看左邊,執行看右邊。


在多型中,成員變數的特點:
無論編譯和執行,都參考左邊(引用型變數所屬的類)。


在多型中,靜態成員函式的特點:
無論編譯和執行,都參考做左邊。












來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27026361/viewspace-1182854/,如需轉載,請註明出處,否則將追究法律責任。

相關文章