接口的应用
接口是一种能力 关键字: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(); }
package interfacedemo3; /** * 播放功能 * @author xjz * */ public interface PlayWriting { void play(String incontent); }
/** * */ package interfacedemo3; /** * @author xjz *上网 */ public interface NetWork { void networkConn(); }
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; } }
/** * */ 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("上网"); } }
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+"音乐"); } }
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/
如需转载,请注明出处!!!
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句