为什么要在抽象方法前加abstract关键字
why it is required to add abstract keyword in front of abstract methods
这可能是一个无用的问题,只是出于我的好奇心。
为什么我们在abstract class
的abstract method
前面强制加关键字abstract
,而我们不需要加
interface
?
情况下的关键字
可能的答案可能是:
由于抽象 class 可能是具体方法和抽象方法的混合,
'abstract' 关键字用于标识哪些方法是抽象的。
但是
当我们不给任何方法任何主体,并在声明末尾使用 ;
时,如果它被自动视为抽象方法,会出现什么问题?
并非抽象中的所有方法 class 都需要是抽象的。事实上,你可以有一个没有任何抽象方法的抽象class。
另一方面,interface
中定义的所有方法都是隐式 public abstract
,因此您可以删除限定符。
Why we are forced to add the keyword abstract in front of abstract method of abstract class, when we don't need to add the keyword in case of interface.
在接口中,所有方法定义都是隐式的abstract
。不过,您可以提供关键字,但不会有任何区别。
在 abstract
类 中,但是,当您想将方法表示为 abstract
时,您需要键入 abstract
关键字。这实际上使代码更具可读性和易于理解。
两个答案
- 这就是语言的设计方式
- 抽象方法旨在在子 类 中被覆盖,这意味着一些 VM 在看到抽象关键字时可以进行各种优化
顺便说一句。在 java 4 接口中实际上有 abstract 关键字。现在它被认为是过时的
你明确地提到它,这样任何扩展 class 的人都会知道他应该强制实现这些方法,如果他不需要的话,就不必为没有抽象关键字的方法而烦恼。
这可能是一个无用的问题,只是出于我的好奇心。
为什么我们在abstract class
的abstract method
前面强制加关键字abstract
,而我们不需要加
interface
?
可能的答案可能是:
由于抽象 class 可能是具体方法和抽象方法的混合,
'abstract' 关键字用于标识哪些方法是抽象的。
但是
当我们不给任何方法任何主体,并在声明末尾使用 ;
时,如果它被自动视为抽象方法,会出现什么问题?
并非抽象中的所有方法 class 都需要是抽象的。事实上,你可以有一个没有任何抽象方法的抽象class。
另一方面,interface
中定义的所有方法都是隐式 public abstract
,因此您可以删除限定符。
Why we are forced to add the keyword abstract in front of abstract method of abstract class, when we don't need to add the keyword in case of interface.
在接口中,所有方法定义都是隐式的abstract
。不过,您可以提供关键字,但不会有任何区别。
在 abstract
类 中,但是,当您想将方法表示为 abstract
时,您需要键入 abstract
关键字。这实际上使代码更具可读性和易于理解。
两个答案
- 这就是语言的设计方式
- 抽象方法旨在在子 类 中被覆盖,这意味着一些 VM 在看到抽象关键字时可以进行各种优化
顺便说一句。在 java 4 接口中实际上有 abstract 关键字。现在它被认为是过时的
你明确地提到它,这样任何扩展 class 的人都会知道他应该强制实现这些方法,如果他不需要的话,就不必为没有抽象关键字的方法而烦恼。