重新認識Java(9 1) 抽象類與多型

2021-08-22 08:48:37 字數 1374 閱讀 2594

抽象類是乙個特殊的類。

abstract:修飾符,抽象的意思

修飾類:抽象類。

修飾方法:抽象方法。

特點:抽象類不能例項化

抽象方法要在抽象類中

抽象類必然有子類,子類想要建立物件,子類將繼承的所有抽象方法全部覆蓋。

如果只覆蓋了部分抽象方法,那麼子類依然是抽象類。

成員:抽象方法

成員變數,成員方法,構造方法

抽象類中可以沒有抽象方法,目的該類不能例項化。

注意:abstract不能和final和private一起使用。

abstract不能和static修飾的抽象方法一起使用。

什麼時候使用抽象類?

當不想要類能例項化時,可以定義為抽象類。

所有子類都需要將繼承的方法進行覆蓋,那麼父類該方法應為抽象方法,那麼該類是抽象類。

指乙個物件具備多種形態。

例如 :生活中水:  固態  液態  氣態

class  動物{}

class  狗  extends 動物{}

建立物件時:    狗   d = new 狗();  //本態

動物   d = new  狗();  //多型

前提條件:必須有繼承或者是實現。

表現形式:父型別引用指向自己的子類物件

好處:提高了**的擴充套件性

弊端:不能訪問子類特有的成員。

在方法中:引數中可以接收animal型別,與可以接收animal的子類

多型的型別轉換:

向上轉型(型別提公升):  父型別引用指向子型別(小———>   大)                     animal  a  = new  cat();

向下轉型(強制型別轉換):將父型別引用轉成子型別 (想要訪問子類特有的方法時)(大———>   小)

注意:型別轉換時,改變的是引用稱呼,一會是父型別,一會是子型別

而物件本身由始至終都沒有改變。

animal a = new animal();

cat c = (cat)a;

編譯通過,執行出現classcastexception

異常。

instanceof:比較運算子,結果為boolean

比較是否是指定的型別

多型中成員的特點:

多型形式建立的物件:

1. 無論是靜態成員還是非靜態成員,編譯器時期都看父類

2.對於成員方法,編譯通過,執行的是子類的結果

3.對於靜態方法,靜態變數,變數,編譯通過執行的都是父類結果

Java抽象類與抽象方法

一 定義乙個抽象類animal public abstract class animal這個類裡面現在什麼都沒有。那麼它裡面可以有什麼?我們試著給它加上成員變數,成員方法等,看看行不行。public abstract class animal int quality public void eat ...

Java 抽象類與抽象方法

抽象方法 在類中沒有方法體的方法,就是抽象方法。抽象類 含有抽象方法的類就叫抽象類。抽象類中的抽象方法必須被實現!如果乙個子類沒有實現父類中的抽象方法,則子類也成為了乙個抽象類!抽象類中的普通方法,可以不必實現。1用abstract關鍵字來修飾乙個類時,這個類叫做抽象類 用abstract來修飾乙個...

Java(抽象類與抽象方法)

關鍵字abstract修飾的類稱為抽象類,抽象類是一種沒有完全實現的類,不能用它例項化任何物件,它的主要用途是描述一些概念性的內容,然後在子類中具體的實現這些概念,這樣可以提高開發效率,統一使用者介面,所以抽象類更多的是作為其他類的父類。抽象類中可以含有抽象方法,抽象方法是用abstract修飾的方...