两个Java函数声明之间的区别

abh*_*rni 2 java abstract function-declaration

当我遇到两个函数声明时,我正在阅读Hadoop文档,返回对抽象类的引用:

public FSDataInputStream open(Path f) throws IOException
public abstract FSDataInputStream open(Path f, int bufferSize) throws IOException
Run Code Online (Sandbox Code Playgroud)

除了参数的差异,为什么这两个函数有不同的返回类型,一个明确声明abstract而另一个没有?

谢谢.

Col*_*n D 6

声明了抽象方法但没有实现.子类被强制实现它们并且不能继承它们,因为它们没有在超类中实现.


biz*_*lop 6

要回答原始问题,abstract也不是返回类型的一部分,它是方法本身的修饰符,就像public.两种方法的返回类型是相同的.


Suj*_*jay 5

public abstract FSDataInputStream open(Path f, int bufferSize) throws IOException定义的类本身就是抽象的.这意味着该类刚刚提供了方法的声明而不是实现.

另一个可以是以下任何一个:

  • 如果在接口中进行了解析,则表明该方法再次是一个抽象声明.

  • 或者,它可能是具体类的一部分,表明它在那里有一个实现.