黑馬程式設計師 抽象類 介面 內部類

2021-06-17 14:21:11 字數 2588 閱讀 8838

----------------------

asp.net+android+ios開發、

.net培訓、期待與您交流! ----------------------

使用abstract關鍵字修飾的類就是抽象類,抽象類裡可以包含抽象方法

抽象類的作用就是做乙個模版,無法建立例項

除了抽象方法外,正常類中有的元素,抽象類中都可以包含

因為定義抽象建構函式就無法初始化抽象類

抽象方法被abstract修飾,沒有方法體,所以必須被子類實現後才可以呼叫

抽象方法沒有花括號,空方法體有花括號,但沒方法體

當abstract修飾類時,表明這個類只能被繼承,當abstract修飾方法時,表明這個方法必須由子類實現(重寫)。

而final修飾的類不能被繼承,final修飾的方法不能被重寫

因此final和abstract不能同時使用

abstract只能修飾類和方法(不能修飾建構函式)

抽象類裡定義的構造器只能是普通構造器

當使用static來修飾乙個方法時,表明這個方法屬於當前類,即可以通過類來呼叫

如果該方法被定義成抽象方法,則通過類呼叫時會出錯(因為沒有方法體)

因此static和abstract不能同時修飾某個方法

abstract關鍵字修飾的方法必須被其子類重寫才有意義,否則著個方法將永遠不會有方法體

因此abstract方法不能定義為private訪問許可權,private和abstra不能同時使用

介面抽象類是從多個類中抽象出來的模版,而介面體現的是一種規範,作為規範,介面裡的所有方法都是抽象方法,介面不需要初始化,所以沒有建構函式,沒有初始化**塊

讓規範和實現分離正是介面的好處,讓軟體系統的各模組之間面向介面耦合,從而盡量降低各模組之間耦合,為系統提供更好的可擴充套件性和可維護性,介面體現的是規範和實現分離的設計哲學

介面作為一種規範,介面內的元素(字段、方法、內部類等)必須能夠被訪問,所以介面裡的所有元素都是public修飾

字段只能是靜態常量(public static final)

方法只能是抽象(public abstract)

內部類、列舉類都是靜態(public static)

修飾符 inte***ce 介面名 extends 父介面1, 父介面2...

修飾符可以是public或者省略,如果省略了修飾符,預設採用protected修飾符

乙個介面可以有多個直接父介面(可以多繼承),但介面只能繼承介面,不能繼承類

介面體現的是一種規範,是多個模組間的耦合標準

抽象類則不一樣,抽象類作為系統中多個子類的共同父類,它所體現的是一種模版式設計

將乙個類定義在另乙個類的裡面,裡面那個類就稱為內部類(內建類,巢狀類)

訪問特點:

內部類可以直接訪問外部類中的成員,包括私有成員,而外部類要訪問內部類中的成員必須要建立內部類的物件

/**

內部類*/

class outer

}void method()

}class innertest

}

當內部類在成員位置上,就可以被成員修飾符所修飾

比如private:將內部類在外部類中進行封裝

比如static:內部類具備static特性

當內部類被static修飾後,只能直接訪問外部類中的static成員。出現了訪問侷限

在外部其他類中,如何直接訪問內部類的非靜態成員呢?

new outer.inner().function();

在外部其他類中,如何直接訪問內部類的靜態成員呢?

outer.inner.function();

注意:當內部類中定義了靜態成員,該內部類必須被靜態修飾

當外部類中的靜態方法訪問內部類時,該內部類也必須被靜態修飾

把乙個類定義在方法上,位於區域性位置,稱為區域性內部類

特點:不可以被成員修飾符修飾(如:private static)

仍然可以直接訪問外部類中的成員,當訪問所在方法的區域性變數時,區域性變數要使用final修飾

/**

區域性內部類*/

class demo}

class outer

}new inner().innermethod(); //區域性內部類只能在所在方法內建立例項}}

匿名內部類其實就是內部類的簡寫格式,定義匿名內部類的前提是內部類必須是繼承乙個類或者實現介面

其實匿名內部類就是乙個匿名子類物件。而且這個物件有點胖

/**

匿名內部類*/

class anonymoustest}

abstract class absdemo

class outer

}.function();}}

----------------------

asp.net+android+ios開發、

.net培訓、期待與您交流! ----------------------

黑馬程式設計師 抽象類 介面

asp.net unity開發 net培訓 期待與您交流!抽象類 abstract 1.抽象方法必須定義在抽象類中。2.抽象方法和抽象類必須被abstract修飾。3.抽象類不可以用new建立物件,因為呼叫抽象方法沒意義。4.抽象類中的方法要被使用必須由子類覆寫其所有的抽象方法後,建立子類物件呼叫,...

黑馬程式設計師 抽象類

asp.net android io開發s net培訓 期待與您交流!抽象類 abstract 當多個類中出現相同功能,但是功能主體不同,這時可以進行向上抽取,這時,只抽取功能定義,不抽取功能主體。抽象類的特點 1.抽象方法一定定義在抽象類中。2.抽象方法和抽象類都必須被abstract關鍵字修飾。...

黑馬程式設計師 抽象類

asp.net unity開發 net培訓 期待與您交流!抽象類當編寫乙個類時,我們往往會為該類定義一些方法,這些方法是用來描述該類的行為方式,那麼這些方法都有具體的方法體。但是有的時候,某個父類只是知道子類應該包含怎麼樣的方法,但是無法準確知道子類如何實現這些方法。抽象方法的定義 通過abstra...