抽象類與介面區別

2021-07-15 01:22:01 字數 1222 閱讀 4431

抽象類:

抽象類無法例項化(即不能new)。使用抽象方法,該方法是只需宣告不需要實現。抽象方法需要定義在抽象類中,乙個類包含抽象方法,這個類一定是抽象類。如果某個類是抽象類,他可以有具體方法(有宣告,有實現),也可以有抽象方法。子類繼承父類(該父類為抽象類)就要實現該父類的所定義的所有抽象方法,否則該子類也要定義為抽象類。抽象類中的變數可以只定義不賦值(static)。並且可以在子類中更改。抽象方法預設為public ,需要在方法前面加入abstract。抽象方法必須為public或者protected(因為如果為private,則不能被子類繼承,子類便無法實現該方法),預設情況下預設為public。

**:public class main}

abstract class a

} abstract class b extends a

} class c extends b

@override

void a()

介面:

介面裡的方法不能實現,只能宣告是;而介面的屬性不但要定義,還要賦值,。抽象類實現介面不需要實現介面裡面的方法。而普通類實現介面就要實現介面裡面的所有方法。介面可以多實現,但類只能單繼承,介面是為了彌補單繼承的缺點。介面中的方法只能為public,介面中可以定義「成員變數」,或者說是不可變的常量,因為介面中的「成員變數」會自動變為為public static final。可以通過類命名直接訪問:implementclass.name。

**:public class jiekou }

inte***ce a

abstract class b implements a

class c extends b

@override

public void a()

@override

public void c()

}

兩者的區別:

1.抽象類是對類抽象,而介面是對行為的抽象。抽象類是對整個類整體進行抽象,包括屬性、行為,但是介面卻是對類區域性行為進行抽象。

2.乙個類只能繼承乙個抽象類,而乙個類卻可以實現多個介面。

3.抽象類中的方法可以實現,但介面中的方法只能宣告不能實現。

4.抽象類中的成員變數可以是各種型別的,而介面中的成員變數只能是public static final型別的;

詳述抽象類與介面區別

抽象類父類 package dubhe 3 乙個類中如果有抽象方法,那麼這個類一定是抽象類,否則語法錯誤 abstract 抽象的 public abstract class mammal 子類 package dubhe public class whale extends mammal test...

抽象類和介面區別

含有abstract修飾符的class即為抽象類,abstract類不能建立的例項物件。含有abstract方法的類必須定義為abstract class,abstract class類中的方法不必是抽象的。abstract class類中定義抽象方法必須在具體 concrete 子類中實現,所以,...

抽象類和介面區別

在開發人員崗位面試時,是否了解抽象類和介面之間的基本區別是乙個很重要的考量因素。完全不是。筆者面試過很多人,通常問的第乙個問題是關於介面和抽象類的區別。但實際上很少有程式設計師能給出正確的答案。就這個問題來說,初級程式設計師可能都會清楚之間的區別,可能也並不一定理解其背後的原因,但其結構上的差異,特...