抽象類和接口的簡要概述
1、抽象類:
關鍵字:abstract 修飾的類
特點:具有抽象方法的類,不能夠實例化,可以同時有普通方法和抽象方法;
定義:訪問修飾符 abstract class 類名{}
抽象方法:訪問修飾符 abstract class 方法名();
抽象方法和抽象類不能夠用用private修飾,有構造方法,子類如果繼承了它需要實現裏面的抽象方法(就是方法重寫)
public abstract class abstra {
public abstract void play();
}
作用:主要用作父類,在子類眾多都需要繼承父類中方法的時候,不好在父類定義方法,可以使用abstract修飾類和方法,
一般用於父類,使用起來除了不能夠實例化其它都差不多;
2、接口:
關鍵字:interface
用關鍵字implements實現接口;
特點:抽象類的升級,接口裏面的方法都是抽象方法,由常量和抽象方法組成不能夠實例化;
定義:訪問修飾符 interface 接口名字{}
抽象方法和接口不能夠用用private修飾,無構造方法,子類中如果實現了接口implements需要重寫裏面的方法;
public interface inter {
public final double PI=3.14;
public abstract void play();//public abstract可以省略
}
應用範圍:
a.接口可以繼承多個接口;
b.子類可以實現多個接口;
c.子類可以繼承一個父類同時實現多個接口;註意一般extends繼承的父類在前,implements在後
作用:解耦,降低程序之間的耦合性,減少非他不可的不可替代性,提高程序的擴展性,;解決了類的單一繼承性;
個人理解:在應用的過程中,一般來說抽象類可以解決需要接口的問題,但是抽象類一般用作於一個類屬性的父類,如果有很多子類需要一個共同的方法,而類型不同呢?
這個時候最好定義一個接口,接口表示一個功能,沒有類屬性的局限性(比如說動物類定義為抽象類,那麽裏面的抽象方法一般都為動物的屬性方法,具有局限性),只有有這個功能,都可以實現這個接口;
可以和多態一起結合使用,把接口作為返回值類型或者參數更能夠體現接口的解耦性,接口能夠更好的體現解耦;
3. 抽象類和接口的區別
a、抽象類可以有普通方法和普通屬性;
b、抽象類有構造方法;
c、抽象類和接口定義的關鍵字不同;
d、抽象類只能單繼承,接口可以繼承多個接口
註意:抽象類不可以繼承接口,可以實現接口。
抽象類和接口的簡要概述