Java 关于接口的那点事儿

2018-02-28 07:47:25来源:cnblogs.com作者:房上的猫人点击

分享
第七城市

接口的应用

   接口是一种能力
   关键字: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/

如需转载,请注明出处!!!

第七城市

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台