Я пытаюсь понять абстрактные классы в 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()
?