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(); }
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/
如需转载,请注明出处!!!