----------------------
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...