抽象類和介面

2022-08-14 01:21:23 字數 1578 閱讀 3643

抽象類

abstract修飾符

1.abstract修飾的類為抽象類,此類不能有物件,(無法對此類進行例項化,說白了就是不能new);

2.abstract修飾的方法為抽象方法,此方法不能有方法體(就是什麼內容不能有);

關於抽象類的使用特點:

1.抽象類不能有物件,(不能用new此關鍵字來建立抽象類的物件);

2.有抽象方法的類一定是抽象類,但是抽象類中不一定有抽象方法;

3.抽象類中的抽象方法必須在子類中被重寫。

子類實現方法必須含有相同的或者更低的訪問級別(public->protected->private)。抽象類的子類為父類中所有抽象方法的具體實現,否則也是抽象類。

為什麼要有抽象類?

有些東西不一定是乙個人寫的,所以有些放法在當時有可能寫不出來,所以就寫個大概。

抽象方法不能有方法體,在方法後面加乙個大括號而裡面什麼都不寫也是不行的,編譯器會報「abstract methods do not specify a body」

當乙個類繼承抽象類的時候,這個類必須去重寫所繼承的抽象類的抽象方法,否則編譯器會報「the type cat must implement the inherited abstract method animal.eat()」的錯誤。

介面

1.介面中的所有屬性預設為:public static final ****;

2.介面中的所有方法預設為:public abstract ****;

3.介面不再像類一樣用關鍵字 extends去「繼承」,而是用 implements 去「實現」,也就是說類和介面的關係叫做實現,(例如:a類實現了b介面,那麼成為a為b介面的實現類。而類與類之間的繼承的話,叫做a類繼承了b類,其中b類即為a類的父類)。實現介面與類的繼承比較相似

乙個類可以實現多個介面,但只能繼承於乙個類,所以可以通過這種方式來實現多繼承。

介面中的方法預設修飾符為「public abstract」

在介面中所有的屬性的修飾符都預設為"public static final",

介面和抽象類的區別

抽象類描述的是「是不是」的問題,而介面描述的是「有沒有」的問題;介面強調特定功能的實現,而抽象類強調所屬關係。

介面只有定義,

不能有方法的實現,而抽象類可以有定義與實現,方法可在抽象類中實現。

實現介面的關鍵字為implements,繼承抽象類的關鍵字為extends。乙個類可以實現多個介面,但乙個類只能繼承乙個抽象類。所以,使用介面可以間接地實現多重繼承。

介面成員變數預設為public static final,必須賦初值,不能被修改;其所有的成員方法都是public、abstract的。抽象類中成員變數預設default,可在子類中被重新定義,也可被重新賦值;抽象方法被abstract修飾,不能被private、static、synchronized和native等修飾,必須以分號結尾,不帶花括號。

介面被用於常用的功能,便於日後維護和新增刪除,而抽象類更傾向於充當公共類的角色,不適用於日後重新對立面的**修改。功能需要累積時用抽象類,不需要累積時用介面。

介面和抽象類

介面和抽象類 今天自學了一下介面,從第一次接觸介面又進一步理解介面的原理。想到介面或許我們更多的是想到和類的對比,而類中抽象類和介面又更為相似。現在我講下我對介面和抽象類的理解。如果單從具體 來看,對這兩個概念很容易模糊,甚至覺得介面就是多餘的,因為單從具體功能來看,除多重繼承外 c 抽象類似乎完全...

抽象類和介面

抽象類 1.是一種特殊的類,除了不能被例項化外,具有類得其他特性.2.抽象類的方法可以不宣告為abstract,此時可以實現方法提 如果宣告為abstract,則不可以實現方法體,只能宣告,如 public abstract int remove int i,int j 此時類必須宣告為抽象 3.乙...

抽象類和介面

1.抽象類 含有abstract修飾符的類即為抽象類。可用於實現 重用。抽象類與普通類的唯一區別 不能建立例項物件 允許有抽象方法,但不必須是抽象的。抽象類中定義的抽象方法必須在具體子類中實現,所以不能有抽象構造方法或抽象靜態方法 如果沒有全部實現抽象父類的抽象方法,子類也要定義為抽象型別。2.介面...