接口的应用
接口是一种能力 关键字: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/
如需转载,请注明出处!!!