相同點(diǎn)
* 都不能被直接實(shí)例化,都可以通過(guò)繼承實(shí)現(xiàn)其抽象方法。
* 都是面向抽象編程的技術(shù)基礎(chǔ),實(shí)現(xiàn)了諸多的設(shè)計(jì)模式。
不同點(diǎn)
* 接口支持多繼承;抽象類不能實(shí)現(xiàn)多繼承。
* 接口只能定義抽象規(guī)則;抽象類既可以定義規(guī)則,還可能提供已實(shí)現(xiàn)的成員。
* 接口是一組行為規(guī)范;抽象類是一個(gè)不完全的類,著重族的概念。
* 接口可以用于支持回調(diào);抽象類不能實(shí)現(xiàn)回調(diào),因?yàn)槔^承不支持。
* 接口只包含方法、屬性、索引器、事件的簽名,但不能定義字段和包含實(shí)現(xiàn)的方法;抽象類可以定義字段、屬性、包含有實(shí)現(xiàn)的方法。