---
# System prepended metadata

title: Abstract Class vs Interface
tags: [開發經驗分享]

---

# Abstract Class vs Interface


  
Abstract Class:特殊的類，不能被實例化，只能被繼承，可提供屬性、預設實作

Interface:不是類，沒有實作，只提供名稱


## 總結
多版本元件，可以建立抽象類別，更新基類，所有繼承類都會隨著變更自動更新。另一方面，介面一旦創建就無法更改。如果需要新版本的接口，您必須建立一個全新的接口。

功能對不同的物件都很有用，使用介面。抽象類用於密切相關的對象，而介面最適合為不相關的類別提供通用功能。

小而簡潔，使用介面。大型功能單元，抽象類。

## ref
[Why we use abstract class and interface ? Difference between Class, Abstarct Class and Interface](https://stackoverflow.com/questions/36975305/why-we-use-abstract-class-and-interface-difference-between-class-abstarct-cla)
