抽象類裏面有兩種屬性和方法code
is-a
關係,是爲了解決代碼複用問題is-a:表明類與類之間的繼承關係 好比:貓和狗都是動物,都繼承動物的特性。(所謂動物的特性就至關於抽象類中的抽象屬性和方法、貓和狗都具備動物的特性,即實現動物的抽象屬性)
has-a
關係,是爲了解決解耦問題,提升代碼的擴展性has-a:表明對象和它的屬性之間的從屬關係 同一個類的對象,經過它的屬性的不一樣值來區別 好比:小明和小紅 都是同一個類(Person) 可是他們有不一樣的屬性值(Person xiaoming = new Person("小明"))是一個總體和部分的關係
B 繼承 抽象類A 並實現了 A 中的抽象屬性和方法,那麼它就屬於 A
好比 鳥(有翅膀、尖嘴、會下蛋) -繼承- B(會說人話):B繼承鳥類這個抽象類那麼他就得實現鳥類得相關特性,因此它就是一隻鸚鵡對象
Man 和 Woman實現 接口Person 重寫 Person 中的相關方法來,可是賦予了不一樣內容,進而有了不一樣的能力繼承
好比你要寫全部的不少鳥相關的類、你把每一個鳥都有的屬性寫在抽象類中、而後再在子類當中寫入不一樣的鳥所特有的屬性,這樣就不用再在子類中添加這些屬性。使得代碼高度複用接口
好比說你要寫王者榮耀裏全部的的英雄的技能,假設這些英雄都只有3個技能,那麼咱們就在接口中定義(技能1、技能2、技能三)便可、而後每一個英雄的技能在子類中具體實現便可。變量