四、接口

  • 一、掌握接口基础知识 

接口是特殊的抽象类。抽象类中往往有具体的方法和抽象的方法,只有抽象方法的抽象类可以用接口来表示

接口比抽象类更灵活,越灵活的东西耦合度越低,Spring就是面向接口编程,面向切面​​​​​

定义接口:

public interface IMyInterface {//接口名称最好以大写的I开头,表示定义的是一个接口

    public void foo();     //所有方法都是: public abstract

    //其他方法 

}

接口特性:

  1. 接口不可以被实例化
  2. 实现类必须实现接口的所有方法 (抽象类除外)
  3. 实现类可以实现多个接口 (Java中可以间接实现多继承)
  4. 接口中的变量都是静态常量,即使用public static final修饰
  5. 接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量(成员变量)和方法的实现(没有方法体)。 即:接口是方法定义和常量定义的集合。
  6. 接口和类类似,也可以从一个父接口中派生。接口的继承也是使用"extends"关键字来完成。
  7. 和类不同的是,一个接口可以继承多个父接口,各个父接口之间使用英文的逗号分隔(即:“,”)
  8. 多个无关的类可实现同一个接口。
  9. 一个类可实现多个无关的接口(implements)
  10. 在Java中,可以通过接口来间接实现多继承,实现某个接口也类似于继承的特性(可以理解为实现接口就是变相的继承)
  11. 接口不能实现接口
public interface AudioDevice{
	public static final int MIN_VOLUME = 5;
	public void turnOn();
	public void turnOff();
	public void tuneVolume(int volume);
}
public interface VideoDevice{
	public static finalint MIN_BRIGHTNESS = 10;
	
	public void turnOn();
	public void turnOff();
}

public interface VADevice extends VideoDevice,AudioDevice{
	public void shiftChannel();
}
  • 二、掌握接口作为一种约定(规范)和能力的含义

  • 接口是一种约定,体现在接口名称和注释上
  • 面向接口编程:程序设计时面向接口的约定(规范)而不考虑具体实现

接口里面的方法必须全部用public修饰,public abstract可以省略,但建议写上public,省略abstract;定义常量是public static final,可以省略,但建议写上,可读性更好些

另一种角度理解:

  • 接口是一种能力,体现在接口的方法上
  • 面向接口编程:(程序设计时)关心实现类有何能力,而不关心实现细节;面向接口的约定而不考虑接口的具体实现 

抽象类可以实现接口,因为在抽象类中可以实现某个接口中的全部或部分方法,例如:实现部分方法时,由于还有剩余的方法没有被实现,所以该类还是一个抽象类,当实现了某个接口的全部方法后,如果该类中还有至少一个方法是抽象方法,该类还是一个抽象类。

  • 在日常开发中,尽量使用接口代替继承,因为接口在一定程度上与继承类拟,而且在实例化对象时,不像类的继承那样需要向上追溯初始化父类。      
  • 但是,也不要一味刻意追求使用接口,接口的抽取是需要长时间对项目的分析而总结出来的。否则如果随意使用接口,将会导致项目中接口较多,从而使维护更加困难。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值