接口类和内部类(二)

一、抽象类和接口对比

相同点:

  1. 都支持抽象方法: 抽象类和接口都可以包含抽象方法,这些方法没有具体的实现,需要在子类中实现。

  2. 都可以被继承: 子类可以继承抽象类,也可以实现接口。

  3. 都可以包含具体方法: 从 Java 8 开始,接口也可以包含默认方法(default methods),提供默认的实现。

  4. 都不能被实例化: 既不能实例化抽象类,也不能实例化接口。

不同点:

  1. 实现方式:

    • 抽象类使用 abstract 关键字定义,可以包含抽象方法和具体方法。
    • 接口使用 interface 关键字定义,只能包含抽象方法(在 Java 8 之前),或者包含默认方法和静态方法(在 Java 8 及之后)。
  2. 构造器:

    • 抽象类可以有构造器,而接口不能有构造器。
  3. 字段:

    • 抽象类可以包含实例字段,而接口只能包含常量字段(static final)。
  4. 多继承:

    • 一个类只能继承一个抽象类,但可以实现多个接口。这是 Java 编程语言的一个关键区别,是为了避免多继承的复杂性问题。
  5. 用途:

    • 抽象类通常用于具有某种共同特性的类,可以包含一些通用的方法和字段,也可以包含抽象方法,由子类实现。
    • 接口通常用于定义一组相关的操作,可以被多个类实现。接口提供了一种机制,允许类在不同的继承体系中共享共同的功能。

Java 8中关于接口的改进 :

静态方法:使用static关键字修饰。可以通过接口直接调用静态方法,并执行其方法体。
默认方法:默认方法使用default关键字修饰。可以通过实现类对象来调用。我们在已有的接口中提供新方法的同时,还保持了与旧版本代码的兼容性

你可能感兴趣的:(Java,java,开发语言)