接口和抽象类

抽象类和接口都是Java中用于实现多态的机制,它们的相同点和不同点如下:

相同点:

  1. 都不能被实例化,只能被继承或者实现。
  2. 都可以包含抽象方法,子类或者实现类必须实现这些抽象方法。
  3. 都可以被用于实现多态。

不同点:

  1. 抽象类可以包含非抽象方法,而接口只能包含抽象方法。
  2. 子类只能继承一个抽象类,但是可以实现多个接口。
  3. 抽象类的方法可以有访问修饰符,而接口的方法默认为public。
  4. 接口可以包含常量,而抽象类不能。
  5. 接口可以被用于定义类型,而抽象类不能。
  6. 接口的成员变量默认为public static final,而抽象类的成员变量可以有不同的访问修饰符。

 

在 Java 中,一个抽象类实现一个接口时,可以选择只实现接口中的一部分方法。但是,如果这个抽象类不是抽象的,那么它必须实现接口中的所有方法。

如果一个抽象类只实现了接口中的一部分方法,那么它必须声明为抽象类。这是因为如果一个类没有实现接口中的所有方法,那么它就不能被实例化,因为无法保证它的所有方法都得到了实现。

需要注意的是,实现接口的抽象类中的未实现方法可以在子类中实现。这意味着如果一个抽象类只实现了接口中的一部分方法,那么它的子类必须实现未实现的方法,否则它也必须被声明为抽象类。

posted @ 2023-10-12 14:08  BlogMemory  阅读(14)  评论(0编辑  收藏  举报