Abstract Method in Java

2025年7月2日 | 阅读 4 分钟

在面向对象编程中,抽象被定义为向用户隐藏不必要的细节(实现),并专注于基本信息(功能)。它提高了效率并降低了复杂性。在 Java 中,可以通过 抽象类和方法来实现抽象。

抽象方法

在 Java 中,抽象方法是没有实现(没有方法体)的方法。它强制子类为其自身实现该方法。

语法

如果一个类包含抽象方法,那么该类本身必须被声明为抽象。

抽象方法具有以下特性

  • 抽象方法没有方法体。
  • 该方法必须使用 abstract 关键字声明。
  • 该方法必须以分号 (;) 结尾,而不是花括号。
  • 子类必须重写它以提供方法定义。
  • 抽象方法必须在 抽象类或接口中定义。否则将导致编译错误,或者子类本身必须声明为抽象。
  • 该方法可以有零个或多个参数。
  • 以下是一些无效的抽象方法声明:final abstract, static abstract, private abstract, native abstract 和 synchronized abstract。

注意:当一个抽象类被继承时,子类通常会为其父类中的所有抽象方法提供实现。但是,如果子类不提供,那么子类也必须声明为抽象。

抽象类的目的

抽象方法有助于确保所有子类都遵循特定的行为或功能,即使确切的实现可能因子类而异。它创建了一个清晰有序的结构,确保派生类始终包含重要的方法。

  • 它在抽象类和 具体类之间强制执行契约。
  • 它促进代码重用。
  • 它创建了灵活的类层次结构。

抽象方法示例

在下面的示例中,我们将学习如何使用抽象类和抽象方法来实现抽象。

示例

编译并运行

输出

Multiplication of 2 numbers: 500
Multiplication of 3 numbers: 400
Method of the abstract class Multiply

在下面的示例中,默认情况下,接口的所有方法都是 public 和 abstract 的。接口不能包含具体方法,即具有方法体的常规方法。

示例

编译并运行

输出

The square of the number is: 49
Cube of a number is: 343

结论

当需要不同行为的实现时,我们必须使用抽象方法。它们支持运行时多态性,并有助于实现抽象,这是 OOP 的核心支柱之一。

Java 抽象方法选择题

1. 关于 Java 中的抽象方法,以下哪项是正确的?

  1. 它们必须有一个方法体
  2. 它们可以是静态的
  3. 它们必须在抽象类或接口中声明
  4. 它们可以是私有的
 

答案:3)

解释:抽象方法没有方法体,必须由子类实现。它们只能存在于抽象类或接口中。


2. 如果一个类包含一个抽象方法但未声明为抽象,会发生什么?

  1. 它可以正常编译和运行
  2. 编译错误
  3. 运行时错误
  4. 该方法被忽略
 

答案:2)

解释:任何包含抽象方法的类本身都必须声明为抽象;否则,编译器会抛出错误。


3. 抽象类可以包含以下哪项?

  1. 仅抽象方法
  2. 仅具体方法
  3. 抽象方法和具体方法都可以
  4. 没有任何方法
 

答案:3)

解释:抽象类可以混合抽象方法(无方法体)和具体方法(有方法体)。


4. 接口中抽象方法的默认访问修饰符是什么?

  1. private
  2. protected
  3. public
  4. default
 

答案:3)

解释:接口中的所有方法都隐式地是 public 和 abstract 的(除非标记为 static 或 default)。


5. 以下哪项是抽象方法的有效声明?

  1. private abstract add(){};
  2. final abstract add();
  3. static abstract add();
  4. abstract public add();
 

答案:4)

解释:抽象方法的无效声明包括:abstract final, abstract static, 和 abstract private。