抽象类、接口、内部类

时间:2019-01-09
本文章向大家介绍抽象类、接口、内部类,主要包括抽象类、接口、内部类使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

抽象类

一个类不可被实例化,而其中有抽象方法和非抽象方法的类.(使用abstract关键字修饰)

 

抽象类特点:

  1. 抽象类中不一定有抽象方法.
  2. 抽象类不能创建对象
  3. 抽象类一定不是最终类(不能用final修饰)

:任何一个java类都有抽象方法

 

接口--interface

JDK1.8以前接口中定义的都是抽象方法.

接口的特点:

  1. 接口不能被实例化
  1. 接口是多实现,接口之间支持多继承
  1. JDK1.8后支持用关键字default定义实体方法
  2. 如果一个类只定义了一个抽象方法,则把这个接口声明为函数式接口,用@Functionalinterface修饰该类,该接口只能定义一个抽象方法

内部类

方法内部类:

定义在方法中的类 --- 为了重复使用某段逻辑,并且是这段逻辑只从属于某一个方法。

特点:

  1. 局部内部类不可使用任何访问修饰符修饰(可使用abstract/final修饰)
  2. 局部内部类支持被继承,但是只能在这个类之后书写,因为有序
  3. 当方法内部类使用所在方法中的数据时,要求这个属性是一个常量
  4. 只能在定义它的方法中使用
  5. 如果外部存在相同名的属性和方法,则使用内部类的
  6. 不可以定义静态变量和静态方法
  7. 可以定义非静态属性和方法
  8. 可以定义静态常量

成员内部类

定义在类中的类,如HashMap中的EntrySet,使用final修饰

特点:

  1. 可以使用任意访问修饰符修饰
  2. 可以使用外部类中的属性和方法
  3. 可以定义非静态变量、方法,不可定义静态变量,方法
  4. 可以定义静态常量

静态内部类:

使用static修饰的内部类:除了和内部类有相同的特点外

  1. 可以定义一切的方法和属性
  2. 只能使用外部类的静态属性和静态方法

匿名内部类:

匿名内部类本质上是实现了对应的接口或者是继承了对应的类。

一个类只要可以被继承,那么就可以存在匿名内部类形式 --- 最终类不存在匿名内部类形式

扩展:类中可以定义类,类中也可以定义接口,接口中可以定义类,接口中也可以定义接口 --- 如果类中定义了接口或者是接口中定义了接口,那么称之为内部接口 --- 类中定义的接口,以及接口中定义的类和接口默认都是静态的