Java中多態的基礎介紹

1-1.多態的概述

代碼當中的多態,就是父類引用指向子類對象的意思。安全

格式以下:對象

      父類名稱 對象名 =  new 子類名稱();接口

或者io

      接口名稱 對象名 = new 實現類名稱();編譯

1-2.多態中成員變量和成員方法的使用

訪問成員變量的兩種方法:table

1).直接經過對象名訪問成員變量,看等號左邊(父類名稱 對象名 =  new 子類名稱();的等號左邊)是誰,就優先用誰。ast

2).間接經過成員方法訪問成員變量,看方法屬於誰,就優先用誰,沒有則向上找。class

成員方法的訪問規則:new的是誰,就優先用誰,沒有則向上找。
口訣:變量

成員方法:編譯看左邊,運行看右邊。權限

成員變量:編譯看左邊,運行看左邊。

1-3.使用多態的好處

不管右邊new的時候,換成哪一個子類對象,等號左邊的調用方法都不用改變。

1-4.對象的向上轉型和向下轉型

向上轉型,就是多態寫法。

格式:

      父類名稱 對象名 = new  子類名稱();

含義:右側建立了一個子類對象,把它看成父類來看待使用,例如貓類屬於動物類,因此貓的父類就是動物,把具體的一隻貓看成動物來看待,就是向上轉型。

在向上轉型中,必定是安全的。

但向上轉型有一個弊端:對象一旦向上轉型了,就沒法調用子類本來有的內容了。因此須要向下轉型,來幫助訪問子類本來有的內容。

格式:

      子類名稱 對象名 = (子類名稱) 父類對象;

含義:將父類對象還原成原本的子類對象。

注意事項:
1).向下轉型時,必須保證對象原本建立的就是一隻「貓」,才能成功向下轉型。

2).若是對象建立時不是一隻「貓」,如今非要向下轉型成爲「貓」,就會致使運行報錯(編譯不會報錯,但在運行時會出現異常:Java.Class.ClassCastException,類轉換異常)。

在這裏,可使用instanceof關鍵字進行輔助啊判斷是否是向下轉型。

使用格式:

      對象 instanceof 類名稱

這將會獲得一個布爾值,也就是判斷前面對象能不能當作後面類型的實例。

2-1.final關鍵字的概念以及四種用法

 final表明最終的,不可改變的。

常見的用法有:
1).用來修飾一個類。      2).用來修飾一個方法。

3).用來修飾一個局部變量。    4).用來修飾一個成員變量。

當用來修飾類時,格式:

      public final class 類名稱{ //...}

含義:當前這個類不能有任何子類,但能夠有父類。

注意:若是一個類是final類,那麼其中全部的成員方法都沒法進行覆蓋重寫。

當用來修飾成員方法時,格式:

      修飾符 final 返回值類型 方法名(參數類){方法體}

當final關鍵字用來修飾方法時,這個方法就是最終方法,也就是不可以被覆蓋重寫。

注意:
對於類和方法,final關鍵字和abstract關鍵字不能同時使用,由於二者本就相互矛盾。

當final關鍵字修飾局部變量時:
final修飾局部變量後,那麼這個變量將不能進行修改,即不可變。

其中,這個「不可變」,對於基本類型來講,是指變量當中的數值不可變。

           對於應用類型來講,是指變量中的地址值不可變。

當final用來修飾成員變量時:

對成員變量,若是使用final關鍵字修飾,那麼這個變量將不可變。

注意:

 1).因爲成員變量具備默認值,因此在用了final關鍵字後必須對成員變量進行手動賦值,不會再給默認值。

2).對於final變量,要麼直接賦值,要麼使用構造方法賦值,兩者選其一。

3).必須保證類當中全部的重載方法都最終會對final成員變量賦值。

2-2.Java中的四種權限修飾符

public > protected > (default) > private

  public protected (default) private
同一個類
同一個包 ×
不一樣包子類 × ×
不一樣包非子類 × × ×

 

注意:

1).對(default),該關鍵字不是default關鍵字,而是什麼都不寫。

2).表格中的√表示能夠互相訪問,×表示不能互相訪問。

相關文章
相關標籤/搜索