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建立對象,由於調用抽象方法沒有意義
四、抽象類中的抽象方法要被使用,必須由子類複寫其全部的抽象方法後,再創建子類對象調用。若是子類只複寫了部分抽象方法,那些該子類一個抽象類
抽象類能夠有抽象方法,也能夠有非抽象方法;也能夠沒有抽象方法。
父類中的抽象方法,在子類中必須複寫。達到父類強制子類完成其功能。
抽象類與通常類的區別:
無太大的區別,該如何描述事物就如何描述。只不過,該事物中出現了一些不確認的東西。這些不確認的東西,也是訪一事物的功能,須要確認體現,但沒法定義功能主體。
抽象類比通常類多了抽象方法。
抽象類不能被實例化。