Java 關於介面的那點事兒,Java介面事兒
介面的應用
介面是一種能力
關鍵字:interface
文法:
public interface MyInterface{ public void foo(); //其他方法 }
註:介面內,所有方法都沒有方法體
介面的特性:
介面不可以被執行個體化 常作為類型使用
實作類別必須實現介面的所有方法
實作類別可以實現多個介面
介面中的變數都是靜態常量 Java中的多繼承
生活中的介面:
電腦USB介面
引出:
USB介面本身沒有實現任何功能
USB介面規定了資料轉送的要求
USB介面可以被多種USB裝置實現
可以使用Java介面來實現
編寫USB介面--->根據需求設計方法
實現USB介面--->實現所有方法
使用USB介面--->用多態的方式使用
介面作為一種約定和能力的含義
介面是一種約定和能力
介面實現Java多繼承
介面中所有方法都是抽象方法
介面中所有變數都是靜態常量
介面在實際開發中的應用:
使用介面開發:
介面是一種能力
關心實作類別有何能力,而不關心實現細節
面向介面的約定而不考慮介面的具體實現
介面的實現:
實現介面的關鍵字:implements
如需要實現多個介面使用“,”分隔
例:
implements A,B,C...
使用介面:多態
與繼承的使用方法相同
一個人可以具有多項能力
一個類可以實現多個介面
栗子:
/** * */package interfacedemo3;/** * @author xjz *拍照 */public interface TheakePIctrues { void takePictrue();}介面類(TheakePIctrues )
package interfacedemo3;/** * 播放功能 * @author xjz * */public interface PlayWriting { void play(String incontent);}介面類(PlayWriting )
/** * */package interfacedemo3;/** * @author xjz *上網 */public interface NetWork { void networkConn();}介面類(NetWork )
package interfacedemo3;/** * 抽象類別 手機 * @author xjz * */public abstract class HandSet { private String brand;//品牌 private String type;//類型 public abstract void sendInfo(); public abstract void info();//描述手機 public abstract void call();//打電話 public HandSet(String brand,String type){ this.brand=brand; this.type=type; } public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public String getType() { return type; } public void setType(String type) { this.type = type; } }抽象父類(HandSet )
/** * */package interfacedemo3;/** * @author xjz *智能機 */public class ApptitudeHandSet extends HandSet implements TheakePIctrues,NetWork { public ApptitudeHandSet(String brand, String type) { super(brand, type); // TODO Auto-generated constructor stub } @Override public void call() { System.out.println("智能機打電話"); } @Override public void info() { System.out.println("智能機發資訊"); } @Override public void sendInfo() { System.out.println("智能機發資訊"); } @Override public void takePictrue() { System.out.println("拍照"); } @Override public void networkConn() { System.out.println("上網"); }}子類(ApptitudeHandSet )
package interfacedemo3;/** * 普通手機 放音樂 * @author xjz * */public class CommonHandSet extends HandSet implements PlayWriting{ public CommonHandSet(String brand,String type){ super(brand,type); } @Override public void call() { System.out.println("打電話"); } @Override public void info() { System.out.println("手機類型為:"+getType()+"手機品牌為;"+getBrand()); } @Override public void sendInfo() { System.out.println("發簡訊"); } @Override public void play(String incontent) { System.out.println("播放"+incontent+"音樂"); } }子類(CommonHandSet )
package interfacedemo3;public class Test2 { /** * @param 房上的貓 */ public static void main(String[] args) { HandSet hs=new CommonHandSet("諾基亞","普通機"); hs.call(); hs.info(); ApptitudeHandSet znj=new ApptitudeHandSet("三星", "智能機"); znj.networkConn(); }}測試類別
總結:
介面有比抽象類別更好的特性:
1.可以被多繼承
2.設計和實現完全分離
3.更自然的使用多態
4.更容易搭建程式架構
5.更容易更換實現
......
Java中的介面
屬性全都是全域靜態常量
方法都是全域抽象方法
無構造方法
一個類可以實現多個介面,非抽象類別實現介面時必須實現介面中的全部方法
抽象類別利於代碼複用,介面利於代碼維護
(C) 房上的貓 。 著作權所有,並保留一切權利。
https://www.cnblogs.com/lsy131479/
如需轉載,請註明出處!!!