接口、抽象類、抽象方法、虛方法:ide
這四個名詞時很是容易混淆的:繼承
首先說一下接口 與抽象類 的異同:接口
相同點:方法
1.他們都不能實例化本身,也就是說都是用來被繼承的。vi
2.抽象類中的抽象方法和接口方法同樣,都不能有方法體實例化
不一樣點:ab
1.抽象類裏能夠有字段,接口中不能有字段.實例
2.抽象類中的普通方法能夠有方法體,而接口方法沒有方法體。
3.接口中的方法不能有訪問修飾符,抽象類中的抽象方法被繼承,須要override重寫 .
4.接口更像是一種規範,一種約束。
5.一個子類只能繼承一個抽象類,但卻能夠繼承多個接口。
接下來是抽象方法 和虛方法 的異同:
其實能夠把抽象方法看作是沒有方法體的虛方法。
相同點:
1.抽象方法和虛方法均可以被重寫。
不一樣點:
1.abstract 和virtual的關鍵字不一樣
2.抽象方法必定沒有方法體,而虛方法能夠有方法體。
3.抽象方法必定須要override重寫,虛方法能夠不重寫。