1. 程式人生 > >Java之繼承概述

Java之繼承概述

  •      前言

        利用繼承可以很好地實現程式碼重用問題。在利用已有的類構造新類時,新類保留已有類的屬性和行為,並可以根據要求新增新的屬性和行為。例如,卡車具有一般汽車的屬性,而特有的屆性就是載貨。曾經介紹過類之間的關係:“USES-A”關係、“HASA”關係、“IS-A”關係。其中,“IS-A”關係是繼承的一個特徵。


 

  • 超類、子類

       被繼承的類一般稱為“超類”或“父類”,繼承的類稱為“子類”。當子類繼承超類時,不必寫出全部的例項變數和方法,只需宣告該類繼承了的已定義的超類的例項變數和方法即可。超類子類是繼承中非常重要的概念,它們形象地描述了繼承的層次關係。

       繼承節省了定義新類的大量工作,可以方便地重用程式碼。例如,把汽車作為父類,當建立汽車的子類轎車時,品牌、價格、最高時速等屬性會自動地被定義,呼叫剎車方法時會自動呼叫在汽車類中定義的剎車方法。但一個子類不必非要使用繼承下來的屬性和方法,一個子類可以選擇覆蓋已有的屬性和方法,或新增新的屬性和方法。

        由繼承產生的子類比超類具有更多的特徵,因此有時很容易混消二者的概念。通常情況下每個子類的物件 “is” 它的超類的物件。一個超類可以有很多個子類,所以超類的集合通常比它的任何一個子類集合都大。例如交通工具包含飛機、汽車、自行車等,而汽車子類只是交通工具中的一個小子集。


  • 繼承的層次

       繼承關係可以用樹性層次表達出來,注意,汽車類定義了品牌、價格、時速等屬性,以及剎車、啟動等方法。當定義繼承汽車類的子類卡車時,它自動繼承汽車類的屬性和方法。

        繼承只是程式碼重用的一種方式,濫用繼承會造成很嚴重的後果。只有需要向新類中新增新的操作,並且把已存在類的預設行為融合進新類中,才需要繼承已存在的類。