2015-07-22 3 views
2
final class AbsTest {} 

class BTest extends AbsTest {} 

Как предотвратить создание подкласса (ов) без использования final ключевого слова?Как избежать подкласса без использования конечного ключевого слова в Java

+2

Итак ... почему вы пытаетесь это сделать? как указано в ответах до сих пор, существуют способы для определенных условий, но окончательный был создан по какой-то причине. – Foon

ответ

4

Вот несколько вариантов

  • Создание частного Constructor
  • делают каждый метод окончательным, так что люди не могут переопределить их. Вы избегаете случайного вызова методов из подкласса таким образом. Однако это не останавливает подклассы.
  • чек положить в конструктор для класса:

    если (! This.getClass() = abc.class) { бросить новый RuntimeException ("Подклассы не допускается"); }

Ноfinalпредоставляется решить такую ​​проблему, я должен сказать,так лучше пойти сfinal !!!

+0

@Sunjay: Спасибо – PANKAJGSINGH

1

В коде выше, как предотвратить создание подкласса без использования «окончательного» ключевого слова

Вы можете объявить частные конструктор, чтобы избежать создания объекта.

private AbsTest() { 

} 
+0

Это не сработает, если оба являются внутренними классами, и они имеют один и тот же родительский элемент, в этом случае использование «final» является единственным вариант. – Jack

Смежные вопросы