介面的應用 介面是一種能力 關鍵字:interface 語法: 註:介面內,所有方法都沒有方法體 介面的特性: 介面不可以被實例化 常作為類型使用 實現類必須實現介面的所有方法 實現類可以實現多個介面 介面中的變數都是靜態常量 Java中的多繼承 生活中的介面: 電腦USB介面 引出: USB介面本 ...
介面的應用
介面是一種能力
關鍵字: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/
如需轉載,請註明出處!!!