DAY12 抽象類,介面,內部類

2021-09-25 17:44:42 字數 1718 閱讀 9073

抽象類

抽象類:能夠定義抽象方法的類(其他與普通類相同,包含成員變數,方法,構造器,初始化塊,內部類)

抽象方法:沒有方法體的方法

抽象類的限制:

1.抽象類不能例項化物件(構造器為了給子類使用)

2.this指向當前子類物件

3.具體方法可以呼叫抽象方法

4.具體子類必須重寫抽象方法

5.抽象子類可以繼承繼承鏈上所有的抽象方法

6.具體子必須實現繼承鏈上的所有抽象方法

7.final 修飾的類不能被繼承,final修飾的方法不能被重寫,因此final和abstra永遠不可能同時使用

8.abstr不能用於修飾區域性變數,也不能用於修飾構造器

9..static和abstract不能同時修飾某個方法,private和abstr不能同時修飾方法

10抽象類可用於模板模式

抽象父類只用定義需要使用的某些方法,把不能實現的部分抽象成抽象方法,留給其子類去實現;

父類可能包含需要呼叫其他系列方法的方法,這些被調方法即可由父類實現,也可由子類實現

介面

介面:只能定義抽線方法的特殊類(1.8之前)

用於處理繼承單一的侷限性,其實一種 比抽線類還抽像的類,介面和類的關係是實現

介面的定義:

inte***ce 介面名{}

1.介面內的成員方法預設為公共抽象方法,public abstract 可以省略

2.介面內的屬性都預設為公共靜態常量

3.介面內可以定義公共靜態方法

類與類:繼承關係,單一繼承,多層繼承

類與介面:實現關係,多實現

介面與介面:繼承關係多繼承

4.1.8之後可以定義被default修飾的具體方法

介面與抽象類的區別:

1.介面更純粹,有面向介面程式設計

2.類可以實現多個介面

3.介面與介面之間是多繼承(介面只能繼承介面)

4.介面也算特殊的父類,可以實現多型

5.介面的資訊不會因為載入實現類資訊而被載入(因為介面只要能在編譯的時候,限制子類必須重寫方法就可以了

6.介面對外提供規則

7.降低程式的耦合性(可以實現模組化開發,定義好規則,每個人實現自己的模組,提高開發效率)

內部類:

內部類:定義在類內部的類

成員內部類:

1.可以直接訪問外部類的資源

2.又和外部類重複資源,優先訪問自己

3..通過外部類名.this 來訪問外部類當前物件

4.例項化:外部類名.內部類名 引用名= new外部類物件.new 內部類

第一種:out o=new out(); out . inone one=o.new inone();

第二種: out.inone one=new out().new inone();

靜態內部類:

1.只能訪問外部類靜態資源,可以通過類名區分資源

2.例項化:外部類名.內部類名 引用名=new 外部類名.內部類名( )

區域性內部類:

1.不能使用訪問修飾符.預設只能在方法內部訪問

2.可以直接訪問外部類資源,可以通過out.this  訪問外部類資源

匿名內部類:沒有名字的區域性內部類

1.應用型別的子型別或者實現類

2.是當前 所在類的內部類

3.當在匿名內部類中訪問外部方法的變數時,該變數預設為常量

內部類 抽象類 介面

b color brown size large 1.內部類也稱為巢狀類。內部類允許乙個類被定義在另乙個類,或乙個語句甚至乙個表示式中。在一般的內部類中是不允許宣告任何static成員的。只有頂層類可以宣告。如果要在一般內部類中使用static成員,必須引用在頂層類中宣告好的成員。外部類可以呼叫靜態...

內部類,抽象類和介面

abstract普通類繼承抽象類要把抽象類中的所有抽象方法都覆蓋,抽象類繼承抽象類不用。抽象類不能被建立物件。普通類不能有抽象方法,抽象類可以有普通方法。建立了抽象父類的物件new後面是子類物件是可以實現的。implements用來繼承介面,inte ce介面中不存在具體的方法,介面中只存在抽象方法...

抽象類 介面和內部類

1.1 使用抽象類 1.1.1.抽象方法和抽象類 由abstract修飾的方法為抽象方法,抽象方法即只有方法的定義,沒有方法體實現,用乙個分號結尾。即方法五要素中,抽象方法缺少了乙個要素 即 方法體 也可以將抽象方法理解為不完整的方法。若將抽象方法包含在類中,則該類也應該為抽象的,可以理解為,該類也...