接口

接口的描述

  • 接口 = 常量(public static final)+ 抽象方法(public abstract)
  • 接口中的方法默认都是 public abstract 的,抽象方法无方法体;
  • 接口中的常量默认都是 public static final 类型的,所以必须显示的初始化;
  • 接口不能被实例化,接口中没有构造函数的概念;
  • 接口之间可以继承;
  • 实现类实现接口必须重写接口中所有的抽象方法,除非实现类是抽象类;
  • 一个类可以继承一个类的同时,实现多个接口(先继承后实现);
  • 接口可使用多态,接口强调功能,类强调所属关系!

-------------------------------------------------------------------------------------

案例一:所有抽象方法默认 public abstract 修饰,无方法体

案例二:NUM02 变量默认加上 public static final 。另外,常量的标识符我们习惯约定成所有字母大写。

案例三:接口中没有构造函数

案例四:一个类可以同时实现多个接口,实现的接口之间使用逗号分隔开即可。实现了接口之后,要覆盖所有实现的接口中的抽象方法 这样做无形之间相当于实现了多继承。

案例五:类在实现接口的同时还可以继承父类,记得先继承再实现。

案例六:使用多态。

-----------------------------------------------------------------------------------

java 中接口其实描述了类需要做的事情,类要遵循接口的定义来做事,使用接口到底有什么本质的好处?

  • 采用接口明确的声明了它所能提供的服务,这就相当于是为方法制定了标准,实现类只要实现相应的标准就好了。实现了可接插性。
  • 解决了 Java 单继承的问题 ,可以同时实现多个接口
  • 使用多态让我们的代码变得更加灵活

接口(抽象类)多态性的总结

  • 在学习多态之前,我们都是依赖具体的实现,例如:Dog d = new Dog();
  • 在学习多态之后,我们应该依赖抽象类和接口,例如:Animal a = new Dog();
  • 而依赖抽象类和接口,就像你的手机电池一样:你的手机只依赖电池(电池是一个抽象的事物), 而不依赖某个厂家的电池(某个厂家的电池就是具体的事物了) 。因为你依赖了抽象的事物,每个抽象的事物都有不同的实现 ,这样你就可以利用多态的机制完成动态绑定,进行互换,使程序具有较高的灵活。未来的实际项目开发,我们尽量遵循面向接口(抽象)编程,而不要面向实现编程。

接口和抽象类的区别

相同点:

  • 接口和抽象类都不能被实例化,即不能被 new 自己。
  • 接口的实现类和抽象类的(非抽象)子类,必须覆盖接口或者抽象类中的抽象方法。

不同点:

  • 接口只能定义抽象方法不能实现方法JDK8之后提供了default方法,但是应用不多),抽象类既可以定义抽象方法,也可以实现方法。
  • 接口可以同时实现多个,但是只能继承一个父类。
  • 接口强调的是功能,抽象类强调的是所属关系。
  • 接口中的所有成员变量为 public static final, 静态不可修改,当然必须初始化。接口中的所有方法都是 public abstract 公开抽象的。而且不能有构造方法。抽象类就比较自由了,和普通的类差不多,可以有抽象方法也可以没有,可以有正常的方法,也可以没有。

 总结:在实际项目开发中,优先选择接口(因为继承抽象类后,此类将无法再继承,所以会丧失此类的灵活性)

posted @ 2022-03-24 14:13  鹿先森JIAN  阅读(61)  评论(0编辑  收藏  举报