Java 關於介面的那點事兒,Java介面事兒

來源:互聯網
上載者:User

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/

如需轉載,請註明出處!!!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.