java接口和抽象類的區(qū)別有哪些

小億
103
2023-09-15 01:58:36
欄目: 編程語言

  1. 實(shí)現(xiàn)方式不同:接口是用關(guān)鍵字interface定義的,抽象類是用關(guān)鍵字abstract定義的。

  2. 繼承方式不同:類可以實(shí)現(xiàn)多個(gè)接口,但只能繼承一個(gè)抽象類。

  3. 成員變量不同:接口中只能聲明常量,不能聲明實(shí)例變量;抽象類可以包含實(shí)例變量。

  4. 方法實(shí)現(xiàn)不同:接口中的方法都是隱式抽象的,只能聲明而不能實(shí)現(xiàn);抽象類中的方法可以有實(shí)現(xiàn)和不實(shí)現(xiàn)的。

  5. 構(gòu)造器不同:接口沒有構(gòu)造器;抽象類可以有構(gòu)造器。

  6. 默認(rèn)方法不同:接口中可以定義默認(rèn)方法,默認(rèn)方法可以被實(shí)現(xiàn)類繼承或覆蓋;抽象類中不能定義默認(rèn)方法。

  7. 調(diào)用方式不同:接口中的方法必須通過實(shí)現(xiàn)類的實(shí)例來調(diào)用;抽象類中的方法可以通過實(shí)例調(diào)用,也可以通過類名調(diào)用。

總的來說,接口主要用于定義行為規(guī)范,實(shí)現(xiàn)類需要實(shí)現(xiàn)接口中的所有方法;抽象類主要用于被繼承,提供一些通用的實(shí)現(xiàn)代碼,并可以包含具體方法。

0