關(guān)于Java中的接口?
接口:關(guān)鍵字interface
接口中包含的成員,最常見的有全局變量、抽象方法。
注意:接口中的成員都有固定的修飾符
成員變量:public static final
成員方法: public abstract
interface Inter{
? ? public static ?final int x = 3;
? ? public abstract void show();
}
3.接口中有抽象方法,說明接口不可以實例化。接口的子類必須實現(xiàn)接口中所有的抽象方法后,該子類才可以實例化。否則,該子類還是一個抽象類。
4:類與類之間存在著繼承關(guān)系,類與接口中間存在的是實現(xiàn)關(guān)系。
繼承用extends??;實現(xiàn)用implements?;
5:接口和類不一樣的地方,就是,接口可以被多實現(xiàn),這就是多繼承改良后的結(jié)果。java將多繼承機制通過多現(xiàn)實來體現(xiàn)。?
6:一個類在繼承另一個類的同時,還可以實現(xiàn)多個接口。所以接口的出現(xiàn)避免了單繼承的局限性。還可以將類進行功能的擴展。
7:其實java中是有多繼承的。接口與接口之間存在著繼承關(guān)系,接口可以多繼承接口。
接口都用于設(shè)計上,設(shè)計上的特點:
1接口是對外提供的規(guī)則。
2.接口是功能的擴展
3.接口的出現(xiàn)降低了耦合性
抽象類與接口
抽線類:一般用于描述一個體系單元,將一組共性內(nèi)容進行抽取,特點:可以在類中定義抽象內(nèi)容。讓子類實現(xiàn),
可以定義非抽象內(nèi)容讓子類直接使用。他里面定義的都是一些體系中的基本內(nèi)容。
接口:一般用于定義對象的擴展功能,是在繼承之外還需要這個對象具備的一些功能。
抽象類和接口的共性:都是不斷向上抽取的結(jié)果。
抽象類和接口的區(qū)別:
1:抽象類只能被繼承,而且只能單繼承。
接口需要被實現(xiàn),而且可以多實現(xiàn)。?
2:抽象類中可以定義非抽象方法,子類可以直接繼承使用。
接口中都有抽象方法,需要子類去實現(xiàn)。
3:抽象類使用的是??is?a?關(guān)系。
接口使用的?like?a?關(guān)系。?
4:抽象類的成員修飾符可以自定義。
接口中的成員修飾符是固定的。全都是public的。
在開發(fā)之前,先定義規(guī)則,A和B分別開發(fā),A負責(zé)實現(xiàn)這個規(guī)則,B負責(zé)使用這個規(guī)則。至于A是如何對規(guī)則具體實現(xiàn)的,B是不需要知道的。這樣這個接口的出現(xiàn)就降低了A和B直接耦合性。?
/*
? 主板和USB接口
? 接口和多態(tài)配合
*/
//定義USB接口標準
interface USB
{
?public abstract void input();
?public abstract void output();
}
//定義主板
class MainBoard
{
?//主板使用USB上的設(shè)備,什么設(shè)備不知道,就知道USB規(guī)范
?//方法的參數(shù)是一個接口類型
?//調(diào)用useUSB方法,傳遞實現(xiàn)類的對象
?public void useUSB(USB u){//USB u = new Phone();u.in() u.out()
? ? ?u.input();
? u.output();
?}
}
//定義外接設(shè)備,移動電話
class Phone implements USB
{
?public void input(){
? ? System.out.println("手機輸入數(shù)據(jù)");
?}
?public void output(){
? ? System.out.println("手機輸出數(shù)據(jù)");
?}
}
//定義外界設(shè)備,外界的網(wǎng)卡
class NetCard implements USB
{
?public void input(){
? ? System.out.println("網(wǎng)絡(luò)輸入數(shù)據(jù)");
?}
?public void output(){
? ? System.out.println("網(wǎng)卡輸出數(shù)據(jù)");
?}
}
class InterfaceTest2
{
?public static void main(String[] args)
?{
? //建立主板對象,調(diào)用使用USB接口方法
? ? ? ? MainBoard board = new MainBoard();
? board.useUSB(new Phone());
? board.useUSB(new NetCard());
? //System.out.println("Hello World!");
?}
}
/*
? Java學(xué)院的系統(tǒng)
? 三個班級類,抽象類,測試
*/
//對吸煙進行接口的定義
interface Smoking
{
?void smoking();
}
//共性抽取,形成一個抽象類
abstract class ItCast{
? public abstract void study();
}
//定義基礎(chǔ)類
class JavaSE extends ItCast implements Smoking{
? public void study(){
? ? ?System.out.println("學(xué)習(xí)Java基礎(chǔ)");
? }
? public void smoking(){
? ? ?System.out.println("基礎(chǔ)的同學(xué)在抽煙,天壇");
? }
}
//定義就業(yè)類
class JavaEE extends ItCast{
? public void study(){
? ? ?System.out.println("學(xué)習(xí)JavaWeb開發(fā)");
? }
}
//定義沖刺類
class JavaSSH extends ItCast{
? ?public void study(){
? ? ?System.out.println("學(xué)習(xí)三大框架");
? }
}
class InterFaceTest{
? public static void main(String[] args){
? ? ? //調(diào)用基礎(chǔ)的學(xué)習(xí)方法,通過Java學(xué)院也可以找到基礎(chǔ)班
? ?ItCast i = new JavaSE();
? ?i.study();
? ?new JavaSE().smoking();
? ?
? ?i = new JavaEE();
? ?i.study();
? ?
? ?i = new JavaSSH();
? ?i.study();
? ?
? }
}