1
我想了解Java的抽象類,所以我在的IntelliJ寫了這個代碼片段:爲什麼我可以實例化這個抽象類?
AutoCloseable ac = new BufferedInputStream(new InputStream() {
@Override
public int read() throws IOException {
return 0;
}
});
的@Override
和read()
存根被的IntelliJ自動創建。
由於InputStream
是一個抽象類,爲什麼我可以用new
關鍵字實例化它?
而另一件事。當我刪除方法存根這樣的:
AutoCloseable ac = new BufferedInputStream(new InputStream());
的IDE說InputStream
是抽象的,因此不能被實例化(如預期)。
那麼,爲什麼前者是有效的而後者不是?
這個read()
方法從哪裏來?