2016-04-05 2 views
4

У меня есть класс с только статическими методами. Должен ли сам класс стать статичным? Это имеет значение?Должен ли класс с статическими методами статичным?

+6

Там нет правильных или неправильных здесь, но, скорее всего, да, вы должны сделать его статическим, так как это не имеет смысла делать 'новый YourClass()'. –

+2

@ LasseV.Karlsen 'YourClass' не должен быть' static' для 'YourClass.doSomething();'. Только 'doSomething()' должно быть 'static'. – Guy

+0

@Guy В самом деле, но Лассе просто сказал, что не имеет смысла создавать что-то только с помощью статических методов, поэтому он, вероятно, должен быть статическим. –

ответ

6

Имеет ли это значение?

Создание статического класса гарантирует, что он никогда не может быть создан путем генерации ошибки компилятора, если пользователь попытается это сделать. Если класс, состоящий только из статических элементов, просто не предназначен для создания экземпляра, нет причин не ставить его. Вы можете не делать этого, но примеры такого класса не будут очень полезными, и пользователи, создающие эти экземпляры, будут оставлены в замешательстве.

С другой стороны, если вы намерены создавать экземпляры этого класса, но вы ожидаете, что производные классы будут реализовывать свои собственные члены экземпляра, скорее всего, этот класс должен быть абстрактным, а не статическим (и, возможно, теми членами экземпляра должно быть указано заранее через абстрактные определения или интерфейс).

2

В целом: Да.

Вы можете запретить программисту создавать экземпляры объектов определенного класса, создав класс static. Если это то, что вы намереваетесь, тогда сделайте это. Это предотвращает ошибки, показывая (другие коллеги и т. Д.), Что класс не предназначен для создания экземпляра.


public static class A 
{ 
    // Some static member 
} 

A a = new A(); // Compilation error 
Смежные вопросы