一,抽象類(lèi):abstract
1,只要有一個(gè)或一個(gè)以上抽象方法的類(lèi),必須用abstract聲明為抽象類(lèi);
2,抽象類(lèi)中可以有具體的實(shí)現(xiàn)方法;
3,抽象類(lèi)中可以沒(méi)有抽象方法;
4,抽象類(lèi)中的抽象方法必須被它的子類(lèi)實(shí)現(xiàn),如果子類(lèi)沒(méi)有實(shí)現(xiàn),則該子類(lèi)繼續(xù)為抽象類(lèi)
5,抽象類(lèi)不能被實(shí)例化,但可以由抽象父類(lèi)指向的子類(lèi)實(shí)例來(lái)調(diào)用抽象父類(lèi)中的具體實(shí)現(xiàn)方法;通常作為一種默認(rèn)行為;
6,要使用抽象類(lèi)中的方法,必須有一個(gè)子類(lèi)繼承于這個(gè)抽象類(lèi),并實(shí)現(xiàn)抽象類(lèi)中的抽象方法,通過(guò)子類(lèi)的實(shí)例去調(diào)用;
二,接口:interface
1,接口中可以有成員變量,且接口中的成員變量必須定義初始化;
2,接口中的成員方法只能是方法原型,不能有方法主體;
3,接口的成員變量和成員方法只能public(或缺省不寫(xiě)),效果一樣,都是public
4,實(shí)現(xiàn)接口的類(lèi)必須全部實(shí)現(xiàn)接口中的方法(父類(lèi)的實(shí)現(xiàn)也算,一般有通過(guò)基類(lèi)實(shí)現(xiàn)接口中個(gè)異性不大的方法來(lái)做為適配器的做法)
三,關(guān)鍵字:final
1,可用于修飾:成員變量,非抽象類(lèi)(不能與abstract同時(shí)出現(xiàn)),非抽象的成員方法,以及方法參數(shù)
2,final方法:不能被子類(lèi)的方法重寫(xiě),但可以被繼承;
3,final類(lèi):表示該類(lèi)不能被繼承,沒(méi)有子類(lèi);final類(lèi)中的方法也無(wú)法被繼承.
4,final變量:表示常量,只能賦值一次,賦值后不能被修改.final變量必須定義初始化;
5,final不能用于修飾構(gòu)造方法;
6,final參數(shù):只能使用該參數(shù),不能修改該參數(shù)的值;
四,關(guān)鍵字:static
1,可以修飾成員變量和成員方法,但不能修飾類(lèi)以及構(gòu)造方法;
2,被static修飾的成員變量和成員方法獨(dú)立于該類(lèi)的任何對(duì)象。也就是說(shuō),它不依賴(lài)類(lèi)特定的實(shí)例,被類(lèi)的所有實(shí)例共享
3,static變量和static方法一般是通過(guò)類(lèi)名直接訪(fǎng)問(wèn),但也可以通過(guò)類(lèi)的實(shí)例來(lái)訪(fǎng)問(wèn)(不推薦這種訪(fǎng)問(wèn)方式)
4,static變量和static方法同樣適應(yīng)java訪(fǎng)問(wèn)修飾符.用public修飾的static變量和static方法,在任何地方都可以通過(guò)類(lèi)名直接來(lái)訪(fǎng)問(wèn),但用private修飾的static變量和static方法,只能在聲明的本類(lèi)方法及靜態(tài)塊中訪(fǎng)問(wèn),但不能用this訪(fǎng)問(wèn),因?yàn)閠his屬于非靜態(tài)變量.
五,static和final同時(shí)使用
1,static final用來(lái)修飾成員變量和成員方法,可簡(jiǎn)單理解為“全局常量”!
2,對(duì)于變量,表示一旦給值就不可修改,并且通過(guò)類(lèi)名可以訪(fǎng)問(wèn)。
3,對(duì)于方法,表示不可覆蓋,并且可以通過(guò)類(lèi)名直接訪(fǎng)問(wèn)。