1. 程式人生 > >extends和implements區別

extends和implements區別

article 具體實現 接口 -s ack statistic 類定義 完全 tex

extends與implements的不同

1、在類的聲明中,通過關鍵字extends來創建一個類的子類。

一個類通過關鍵字implements聲明自己使用一個或者多個接口。

extends 是繼承某個類, 繼承之後可以使用父類的方法, 也可以重寫父類的方法;

implements 是實現多個接口, 接口的方法一般為空的, 必須重寫才能使用

2、extends是繼承父類,只要那個類不是聲明為final或者那個類定義為abstract的就能繼承

JAVA中不支持多重繼承,但是可以用接口 來實現,這樣就要用到implements,繼承只能繼承一個類,

但implements可以實現多個接口,用逗號分開就行了 比如 :

class A extends B implements C,D,E

接口實現的註意點:

a.實現一個接口就是要實現該接口的所有的方法(抽象類除外)。

b.接口中的方法都是抽象的。

c.多個無關的類可以實現同一個接口,一個類可以實現多個無關的接口。

與Extends的不同
extends, 可以實現父類,也可以調用父類初始化 this.parent()。而且會覆蓋父類定義的變量或者函數。這樣的好處是:架構師定義好接口,讓工程師實現就可以了。整個項目開發效率和開發成本大大降低。 implements,實現父類,子類不可以覆蓋父類的方法或者變量。即使子類定義與父類相同的變量或者函數,也會被父類取代掉。
這兩種實現的具體使用,是要看項目的實際情況,需要實現,不可以修改implements,只定義接口需要具體實現,或者可以被修改擴展性好,用extends。

extends 和 implements 的區別


extends可以理解為全盤繼承了父類的功能
implements可以理解為為這個類附加一些額外的功能
舉個例子,Animal是一個父類,cat,dog,bird,insect都extends了Animal,
但是cat,dog,bird還可以implements比如run,shout這些interface,bird,insect可以implements比如fly這些interface


extends是繼承父類,只要那個類不是聲明為final或者那個類定義為abstract的就能繼承,JAVA中不支持多重繼承,但是可以用接口來實現,extends只能繼承一個類,implements可以實現多個接口
比如 class A extends B implements C,D,E 
interface定義一些方法,並沒有實現,需要implements來實現才可用
extend可以繼承一個接口,但仍是一個接口,也需要implements之後才可用

對於class而言,extends用於(單)繼承一個類(class),而implements用於實現一個接口(interface)。
interface的引入是為了部分地提供多繼承的功能。 在interface中只需聲明方法頭,而將方法體留給實現的class來做。 這些實現的class的實例完全可以當作interface的實例來對待。 在interface之間也可以聲明為extends(多繼承)的關系。 註意一個interface可以extends多個其他interface。

extends和implements區別