2015-11-01 3 views
4

Я читал в книге (Programmez en Java 5 et 6 от Claude Delannoy, по-французски), что в Java 5 и ее предыдущих версиях, если у вас есть абстрактный метод в класс, то этот класс является абстрактным, и нет необходимости упоминать ключевое слово abstract перед классом.Аннотация класс в Java 5 или предыдущий

Это утверждение верно? Я попытался найти спецификацию Java SE 5, но это недостижимо.

+0

В какой книге вы прочитали это? – Tunaki

+0

«Programmez en Java 5 et 6 - Claude Delannoy» на французском –

+0

Уточните свои вопросы, отредактировав их, а не добавляя комментарии. – Raedwald

ответ

2

Oracle публикует JLS, возвращающийся на Java 6: https://docs.oracle.com/javase/specs/ Я не уверен, что JLS для Java 5 доступен в Интернете.

Это говорит, что вы вопрос имеет the same answer независимо от Java версия считается:

Нормальных классы могут иметь абстрактные методы (§8.4.3.1, §9.4), то есть, методы, которые объявлены, но еще не реализованы, только если они являются абстрактными классами.

Это означает: класс, который имеет абстрактный метод, должен быть объявлен абстрактным, иначе вы получите ошибку компиляции.

+0

спасибо, но я прочитал этот ответ, но я все еще ищу java se5 spec. –

+0

@AbdelilahAassou Я уверен, что все версии <= 5 имеют одинаковое определение. См. [Архивная версия первой версии Java] (http://web.archive.org/web/20041205073404/http://java.sun.com/docs/books/jls/first_edition/html/8.doc. HTML # 34944). – alfasin

+0

спасибо много. –

7

Если вы хотите сделать класс abstract, вам необходимо объявить его abstract независимо от того, какую версию java вы используете.

Если класс содержит абстрактный метод, то этот класс также становится абстрактным, и вам необходимо объявить этот абстрактный класс для решения проблемы компиляции.

+0

Вы уверены в версиях <= 5? –

+0

Несмотря на это, было бы плохой практикой не объявлять об этом. –