介面和抽象類

2021-09-05 11:42:03 字數 2037 閱讀 3044

abstract修飾的方法稱之為抽象方法。

包含抽象方法的類稱為抽象類。

抽象類可以包含多個抽象方法。

抽象類不能夠例項化,只能通過實現繼承他的子類來例項化。

abstract不能和final,static, private ,native同時修飾 方法。

abstract不能和final,static, private 同時修飾 類。

抽象類例子

public abstract class door
每個門都有開啟和關閉的功能,但是每個門開啟和關閉的方式不一樣,所以我們在設計的時候就可以先設計抽象類有open和close方法,然後子類繼承抽象類,並實現open和close方法

public class autodoor extends door 

@override

void close()

}public class pullandpushdoor extends door

@override

void close()

}

介面是特殊的類,是對行為的抽象,類是對事物的抽象

介面由全域性變數和抽象方法構成

介面內沒有靜態**塊和靜態方法

介面結構如下:

inte***ce inte***cename
如果用介面實現上面door的邏輯,應該是下面這種寫法

public inte***ce idoor 

public class sounddoor implements idoor

@override

public void close()

}

抽象類子類繼承後,子類必須實現全部抽象方法,介面是被實現的,介面中的所有方法必須被實現

抽象類只能繼承乙個,而介面的話可以實現好幾個介面

抽象類是對事物的抽象,而介面是對行為的抽象,在**中說就是,乙個操作物件是class,乙個操作物件是function。

在上面的例子中,如果要加入乙個報警功能,按照抽象類的實現,則是抽象類新增alarm方法

//抽象類新增alarm方法

public abstract class door

//子類實現抽象類的全部方法

public class autodoor extends door

@override

void close()

@override

void alarm()

}public class pullandpushdoor extends door

@override

void close()

@override

void alarm()

}

但是並不是所有的門都有警報功能,所以在這裡就可以看出抽象類設計的缺點了,如果在抽象類中設計了警報功能,那麼所有繼承抽象類的門都有了警報功能,這可能不是我們想要的,我們之前說過介面是對行為的抽象,警報是一種行為,並不是門獨有的屬性,監控攝像頭也能警報,手機也能警報,所以我們可以將alarm寫成介面,然後子類實現。

//抽象類

public abstract class door

//警報介面

public inte***ce ialarm

//子類實現抽象類的全部方法

//光感門無警報

public class lightdoor extends door

@override

void close()

}//子類實現抽象類方法,並實現介面

//指紋門有警報

public class thumbdoor extends door implements ialarm

@override

void close()

@override

public void alarm()

}

介面和抽象類

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

抽象類和介面

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

抽象類和介面

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