小言_互联网的博客

Java——抽象类和接口

358人阅读  评论(0)

什么是抽象类

就是被abstract所修饰的类,父类将所有子类的共性功能向上抽取后,他并不知道每个子类对这个功能的具体实现,所以没必要在父类中给出共性功能的具体实现,而是给出声明即可。所谓给出功能的声明,就是将此功能抽象出来,然后强制子类必须重写抽象功能。

注意事项
  1. 一旦一个类中,有了抽象方法,那么子类必须为抽象类。
  2. 一个抽象类中可以没有抽象方法。
  3. 抽象类中既可以有抽象方法,也可以有非抽象方法。抽象方法强制子类重写。非抽象方法子类继承下去。
  4. 抽象类不能实例化,可以采取多态的方式间接实例化。
  5. 抽象类的子类,要么重写父类中的所有抽象方法,要么自己也是一个抽象类。
  6. 抽象类中有构造方法,用来子类初始化父类用的。

关键字abstract不能与那些共存

  1. pravite:私有的,不参与继承何谈抽象
  2. final:最终的修饰方法,方法不重写。修饰类,类不能被继承。
  3. static:用静态词修饰的不参与继承,故也无意义。

什么是接口

interface,用来定义一些扩展功能,哪些事物,将来想要具备这个功能,可以实现(implements)这个接口,然后对功能做出具体实现。

注意事项
  1. 用来定义一些额外的功能。
  2. 接口就是用来定义一些规则(规范),实现功能扩展。
  3. 接口中成员变量全是静态的公共常量。 public static final 默认修饰符
  4. 接口中没有构造方法。
  5. 接口全是抽象方法。public abstract 默认修饰符。

接口和抽象类的区别

  1. 思想
    抽象类,抽取所有子类的共性功能,并强制子类对共性功能进行重写。
    接口,定义的是整个继承体系当中的一些额外功能,哪些类想具备这些扩展功能,可以去实现这个接口。
  2. 语法
  • 抽象类中有构造方法,接口中没有构造方法。
  • 抽象类中既可以有抽象方法,也可以有非抽象方法。接口中全是抽象方法。
  • 抽象类中接口有成员变量,也可以有常量。接口中全是公共的静态的常量。
    自我理解
    因为抽象类中的所有的方法,无论使用不使用都需要去重写,就造成了在编写过程中的麻烦,而接口在实现的过程中,不需要重写那么多,接口可以多实现,也弥补了单继承性质的不足。

转载:https://blog.csdn.net/Junzizhiai/article/details/102556919
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场