接口和抽象類的概念不一樣。接口是對動作的抽象,抽象類是對根源的抽象。
當你關注一個事物的本質的時候,用抽象類;當你關注一個操作的時候,用接口。
第一點. 接口可以多繼承,抽象類不行
第二點. 接口中,在jdk1.8之后可以用static和default去修飾方法並且實現,此時實現接口的子類可以調用default修飾的方法,接口名調用被static修飾的靜態方法(default只能用於接口或者switch case上);而抽象類可以實現部分方法。
第四點. 接口中基本數據類型為static 而抽類象不是的。
如果A接口和B接口中有參數相同,方法名相同eat的抽象方法,C類去實現這兩個接口,重寫任意一個就行;
但如果A接口和B接口中有參數相同,方法名相同,方法體不同的被default修飾的方法,C類直接實現需要重寫該方法,方法體里面
默認寫法為:A.super.eat();調用其中任意一個接口中的方法,也可以改成B.super.eat();該寫法只能是:C類實現的含有defaut修飾的方法的接口名.super.被default修飾的方法名();C類沒有實現D接口,即使D接口中有defaut修飾的eat方法,也無法D.super.eat();