實現方式不同:接口是用關鍵字interface定義的,抽象類是用關鍵字abstract定義的。
繼承方式不同:類可以實現多個接口,但只能繼承一個抽象類。
成員變量不同:接口中只能聲明常量,不能聲明實例變量;抽象類可以包含實例變量。
方法實現不同:接口中的方法都是隱式抽象的,只能聲明而不能實現;抽象類中的方法可以有實現和不實現的。
構造器不同:接口沒有構造器;抽象類可以有構造器。
默認方法不同:接口中可以定義默認方法,默認方法可以被實現類繼承或覆蓋;抽象類中不能定義默認方法。
調用方式不同:接口中的方法必須通過實現類的實例來調用;抽象類中的方法可以通過實例調用,也可以通過類名調用。
總的來說,接口主要用于定義行為規范,實現類需要實現接口中的所有方法;抽象類主要用于被繼承,提供一些通用的實現代碼,并可以包含具體方法。