Fork me on GitHub

Java抽象类和接口

1. Java抽象类

  在java中,带有abstract关键字的类被视为抽象类。它可以拥有抽象方法和非抽象方法(带有方法体)

  Java中的抽象

  抽象是仅仅向用户展示功能而隐藏实现细节的过程。另一种方式是,它只向用户展示基本信息并隐藏内部细节,例如发送短信,用户只需要编辑短信内容而无需知道短信是怎么被发送出去的

  抽象让你专注于对象能够做的事情,而不是它如何完成的

  实现抽象的方式

  在java中有两种方式实现抽象:

  1. 抽象类(0%-100%)
  2. 接口(100%)

  抽象类

  1. 抽象类拥有抽象方法和非抽象方法
  2. 需要被继承并且实现它的抽象方法,它不能被实例化
  3. 它可以有构造方法和静态方法
  4. 它可以有final方法但是子类不能重写这个方法

2. java接口

  在java中,接口是类的蓝图,它拥有静态常量和抽象方法。java接口是一种实现抽象的机制,他们只能包含抽象方法,不能有方法体,接口被用来达到抽象和多继承的目的。

  java接口也代表了以一种is-a的关系。

  我们不能实例化一个接口,就像抽象类那样

  在java8中,我们可以使用default方法和static方法;在java9中,我们可以使用private方法

  为什么使用接口?

  使用接口主要有三个原因:

  1. 接口可以达到抽象的目的
  2. 通过接口,我们能支持多继承的功能
  3. 它可以用来实现松耦合

  编辑器的附加限制:

  The Java compiler adds public and abstract keywords before the interface method. Moreover, it adds public, static and final keywords before data members.

  java编辑器在接口的方法前面增加了public和abstract关键字,在数据成员前增加了static和final关键字

  类与接口的关系

  1. 类可以继承类
  2. 接口可以继承接口
  3. 类可以实现接口

  什么是maker或者tagged interface?

  一个没有成员的接口被视为maker或者tagged interface,例如:Serializable, Cloneable, Remote等,他们被用来提供一些有用的信息给JVM,以便JVM执行一些有用的操作

  嵌套接口

  在另一个接口或类中声明的接口称为嵌套接口。嵌套接口用于对相关接口进行分组,以便它们易于维护。嵌套接口必须由外部接口或类引用,它不能被直接访问

3. 抽象类和接口的区别

  1. 最主要的区别:抽象类并非100%的抽象;接口是100%的抽象
  2. 抽象类不能实现多继承,接口可以实现多继承

原文地址:https://www.javatpoint.com/abstract-class-in-java

 

posted @ 2018-08-24 15:24  gitmoji  阅读(153)  评论(0编辑  收藏  举报