首頁  >  文章  >  Java  >  知道java抽象類別與抽象方法是什麼嗎?

知道java抽象類別與抽象方法是什麼嗎?

青灯夜游
青灯夜游原創
2019-11-18 15:17:482803瀏覽

知道java抽象類別與抽象方法是什麼嗎?

java抽象類別與抽象方法是什麼?

在類別的繼承中,如果一個個新的子類別被定義,子類別變得越來越具體,父類別變得更加一般和通用,類別的設計應該保證父子類能夠共享特徵,有時將父類設計得非常抽象,使得父類沒有具體的實例,這樣的類叫做抽象類;一般當我們設計一個類,不需要創建此類的實例時,可以考慮將類別設定成抽象類,讓其子類別實作這個類別的抽象方法

#抽象類別(abstract class)

用abstract 關鍵字來修飾一個類別時,這個類別叫作抽象類別。抽象類別是它的所有子類別的公共屬性的集合,是包含一個或多個抽象方法的類別。

抽象類別可以看作是對類別的進一步抽象。在物件導向領域,抽象類別主要用來進行類型隱藏。

抽象類別的特徵:

 ( 1 ) 不可被實例化

(2)抽象類別是有建構器的(所有類別都有建構器)

(3)抽象方法所在的類,一定是抽象類別(因為抽象方法是沒有方法體的,如果所在的類別不是抽象類,那麼該類別可以實例化對象,呼叫抽象方法,然後無方法體去具體實作功能,則矛盾)

(4)抽象類別可以沒有抽象方法的

 //抽象类
abstract class Person {
     String name;
     public Person(){}//抽象类的构造方法
     public abstract void dink();//抽象方法,无{}方法体
     public void eat(){ //非抽象方法
    };
}
class Student extends Person{
    @Override
    public void eat() {
        System.out.println("吃饭");
    }
    @Override
    public void dink() {
        System.out.println("喝水");
    }
}

抽象方法(abstract method)

abstract修飾的方法為抽象方法,所有的抽象方法都必須存在於抽象類別中。

在抽象類別中定義的方法稱為抽象方法,這些方法只有方法頭的聲明,而用一個分號來取代方法體的定義,即只定義成員方法的介面形式,而沒有具體操作。

抽象方法的特徵:

(1)格式,沒有方法體,包括{ },例如  public abstract void dink();

(2)抽象方法只保留方法的功能,具體的執行,交給繼承抽象類別的子類,由子類別重寫改抽象方法

(3)如果子類別繼承抽象類,並重寫了父類別的所有的抽象方法,則此子類別不是抽象類,可以實例化的

(4)如果子類別繼承抽象類,沒有重寫父類別中所有的抽象方法,意味著子類別中還有抽象方法,那麼此子類別必須必須宣告為抽象的。

知道java抽象類別與抽象方法是什麼嗎?

上面的範例中,Student子類別繼承抽象父類,自重寫了eat()抽象方法,沒有重寫drink()抽象方法,會報錯,解決方法是把drink()方法也重寫了,或是把Student也變成抽象類別

#抽象類別的使用場景

##抽象類別一般在運用多態時,比較適用

以上是知道java抽象類別與抽象方法是什麼嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn