子父類出現後,類成員的特點:
類中成員:
1,變數。
2,函式。
3,建構函式。
1,變數
如果子類**現非私有的同名成員變數時,
子類要訪問本類中的變數,用this
子類要訪問父類中的同名變數,用super。
super的使用和this的使用幾乎一致。
this代表的是本類物件的引用。
super代表的是父類物件的引用。
2,子父類中的函式。
當子類出現和父類一模一樣的函式時,
當子類物件呼叫該函式,會執行子類函式的內容。
如同父類的函式被覆蓋一樣。
這種情況是函式的另乙個特性:重寫(覆蓋)
當子類繼承父類,沿襲了父類的功能,到子類中,
但是子類雖具備該功能,但是功能的內容卻和父類不一致,
這時,沒有必要定義新功能,而是使用覆蓋特殊,保留父類的功能定義,並重寫功能內容。
覆蓋:1,子類覆蓋父類,必須保證子類許可權大於等於父類許可權,才可以覆蓋,否則編譯失敗。
2,靜態只能覆蓋靜態。
過載:只看同名函式的引數列表。
重寫:子父類方法要一模一樣。
3,子父類中的建構函式。
在對子類物件進行初始化時,父類的建構函式也會執行,
那是因為子類的建構函式預設第一行有一條隱式的語句 super();
super():會訪問父類中空引數的建構函式。而且子類中所有的建構函式預設第一行都是super();
為什麼子類一定要訪問父類中的建構函式。
因為父類中的資料子類可以直接獲取。所以子類物件在建立時,需要先檢視父類是如何對這些資料進行初始化的。
所以子類在物件初始化時,要先訪問一下父類中的建構函式。
如果要訪問父類中指定的建構函式,可以通過手動定義super語句的方式來指定。
注意:super語句一定定義在子類建構函式的第一行。
子類的例項化過程。
結論:子類的所有的建構函式,預設都會訪問父類中空引數的建構函式。
因為子類每乙個建構函式內的第一行都有一句隱式super();
當父類中沒有空引數的建構函式時,子類必須手動通過super語句形式來指定要訪問父類中的建構函式。
當然:子類的建構函式第一行也可以手動指定this語句來訪問本類中的建構函式。
子類中至少會有乙個建構函式會訪問父類中的建構函式。
final關鍵字
final : 最終。作為乙個修飾符,
1,可以修飾類,函式,變數。
2,被final修飾的類不可以被繼承。為了避免被繼承,被子類複寫功能。
3,被final修飾的方法不可以被複寫。
4,被final修飾的變數是乙個常量只能賦值一次,既可以修飾成員變數,有可以修飾區域性變數。
當在描述事物時,一些資料的出現值是固定的,那麼這時為了增強閱讀性,都給這些值起個名字。方便於閱讀。
而這個值不需要改變,所以加上final修飾。作為常量:常量的書寫規範所有字母都大寫,如果由多個單詞組成。
單詞間通過_連線。
5,內部類定義在類中的區域性位置上是,只能訪問該區域性被final修飾的區域性變數。
繼承 多型 介面 抽象的特點
繼承的優缺點 優點 新的實現很容易,因為大部分是繼承而來的 很容易修改和擴充套件已有的實現 提高了 的復用性 讓類與類之間產生了關係,是 多型性 的前提 缺點 打破了封裝,因為基類向子類暴露了實現細節 白盒重用,因為基類的內部細節通常對子類是可見的 當父類的實現改變時可能要相應的對子類做出改變 不能...
繼承後訪問成員的特點
繼承後的特點 成員方法 繼承後的特點 構造方法 物件訪問成員變數時,會先在子類中查詢有沒有定義對應的變數,若子類中存在就會就近使用子類中的變數,若子類中沒有定義就會沿著繼承關係往上找有沒有定義相應的變數,若父類中也沒有則編譯不通過。示例 class fuclass ziextendsfu publi...
java中繼承的應用和特點
class fu class zi extends fu 這就實現了繼承通過子類名加上關鍵字extends父類名。a 子類只能繼承父類所有非私有的成員 成員方法和成員變數 b 子類不能繼承父類的構造方法,但是可以通過super關鍵字去訪問父類構造方法。c 不要為了部分功能而去繼承會增加類的耦合性。p...