面向对象(接口)

面向对象(接口)

一、为什么学习接口?

因为接口可以让类实现一些本没有的功能

接口的语法:

public interface AnimalDao{ }

接口不是类,和类的结构有些相似,声明时把class换成interface

接口中的常量

int A=1;

省略了public static final关键字

接口中的抽象方法

void fun();

省略了public abstract

理解

接口就是不考虑所属关系,只考虑功能,大家都用统一的接口,实现规范和标准,比如type-c接口考虑到了双面可插性,他不用考虑是谁用这个接口,只考虑接口实现的功能,然后所有的手机,耳机,刮胡刀,插座,都实现了type-c接口,形成了一种规范和标准

新特性

jdk1.8中接口可以写具体的方法

default 修饰的具体方法和static修饰的具体方法都可以省略public

default和static不能一起使用

小结

  • 接口=常量+抽象方法

    • 常量省略:public static final

    • 方法省略:public abstract

  • 接口的子类是具体的类,则必须实现implements接口的所有的抽象方法

  • 接口可以使用多态,符合多态的所有特征

  • 一个接口不能实现implements另一个接口

  • 一个接口可以同时继承多个接口,打破了单继承的问题,实现类需要把所有多继承接口的抽象方法全部实现

  • 抽象类实现implements接口,不需要重写接口的抽象方法

  • 一个类可以同时继承和实现多个接口(顺序,先继承,后实现)

  • 接口不能创建对象,因为没有构造方法,本质不是类

public class Zi extends Fu implements A,B{  }

接口和抽象类

相同点:

  1. 接口和抽象类都不能被实例化

  2. 接口的实现类和抽象类的(非抽象)子类,必须重写接口或抽象类中的抽象方法。

不同点:

  1. 接口只能定义抽象方法不能实现方法(jdk8之后提供了default方法,但应用不多),抽象类即可以定义抽象方法,也可以实现方法。

  2. 接口可以同时实现多个,但是只能继承一个父类。

  3. 接口强调的是功能,抽象类强调的是所属关系。

  4. 接口中的所有成员变量为public static final,静态不可修改,当然必须初始化。接口中的所有方法都是public abstract 公开抽象的。而且不能有构造函数。抽象类就是多了抽象方法的普通类,可以有构造函数,实例化,可以有普通类。

总结:

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

posted @ 2019-10-09 23:19  Wollf  阅读(153)  评论(0)    收藏  举报