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