abstract抽象

abstract:抽象spa

是用來修飾抽象類和抽象方法的code

那麼什麼抽象,抽象有究竟有什麼用呢??對象

 

咱們知道,「類」是某一類具備相同特徵或行爲的物事,是將這些物事特徵向上抽取得來的;「父類」也是子類不斷向上抽取而來的。blog

好比人這個「類」,都有說話的功能;人「類」下有不少子類,如「中國人」、「德國人」、「法國」人,其都有各本身的語言,即說話功能各不相同。繼承

也就是說子類的繼承父類「說話」功能的同時,都有各本身特殊的說話功能,用代碼表示也就是「子類說話功能會覆蓋父類說話功能」。class

在這樣的狀況下,在父類中定義說話功能就顯得多餘了,由於其被全部子類覆蓋。方法

此時,父類的說話功能內容就要以去除,只保留功能定義,並用abstract(抽象)修飾。static

用代碼表示以下:語言

public class AbstractDemo {

    public static void main(String[] args) {
        new Chinese().speak();        //創建子類對象,並調用方法
    }
}

// 人都有說話的功能
abstract class People {
    abstract void speak(); // 抽象方法只定義基本功能定義,不寫功能主體。主體部分由子類複寫完成,由子類實現。
}

// 中國人說中文
class Chinese extends People {
    void speak() {
        System.out.println("speak Chinese");
    }

}

// 德國人說德語
class German extends People {
    void speak() {
        System.out.println("speak German");
    }
}

 

抽象類中的抽象方法,是全部子類所必備具有的,只是各子類的實現方式不同。父類只提供基本的功能,具體怎麼實現則由各子類完成。di

功能不肯定的,就能夠用抽象來

 

抽象類的特色:
一、抽象方法必定被定義在抽象類串
二、抽象方法、抽象類必須被abstract關鍵字修飾
三、抽象方法不能用new建立對象,由於調用抽象方法沒有意義
四、抽象類中的抽象方法要被使用,必須由子類複寫其全部的抽象方法後,再創建子類對象調用。若是子類只複寫了部分抽象方法,那些該子類一個抽象類

 

抽象類能夠有抽象方法,也能夠有非抽象方法;也能夠沒有抽象方法。

父類中的抽象方法,在子類中必須複寫。達到父類強制子類完成其功能。

 

抽象類與通常類的區別:

無太大的區別,該如何描述事物就如何描述。只不過,該事物中出現了一些不確認的東西。這些不確認的東西,也是訪一事物的功能,須要確認體現,但沒法定義功能主體。

抽象類比通常類多了抽象方法。

抽象類不能被實例化。

相關文章
相關標籤/搜索