Почему класс Java не может быть объявлен как статичный?

Я пытаюсь найти почему наклон класса, который будет создан как помехи? Как:

public static class Qwert{

    public static void main(String args[]){

        int x = 12;
        while(x<12){
            x--;
        }
        System.out.println(" the X value is : "+ x);
    }
}
24
задан Anirvan 29 August 2011 в 22:01
поделиться

2 ответа

В Java ключевое слово static обычно обозначает метод или поле как существующие не один раз для каждого экземпляра класса, а один раз всегда. Класс в любом случае существует один раз, поэтому, по сути, все классы являются "статическими" в этом смысле, а все объекты - экземплярами классов.

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

Или, возможно, вы видели это в других языках, таких как C#, синтаксис которого очень похож на синтаксис Java.

(Однажды я не мог понять, почему экземпляр внешнего класса не собирает мусор - это было потому, что я хранил ссылку на один из экземпляров его внутреннего класса в другом месте, а внутренний класс не был статическим и поэтому имел ссылку на экземпляр внешнего класса. Поэтому по умолчанию я теперь делаю внутренние классы статическими.)

.
58
ответ дан 28 November 2019 в 22:30
поделиться

Чтобы предотвратить инстанцирование определенного класса, необходимо добавить приватный конструктор. Это не позволит "любому другому" классу создать объект типа Qwert.

например:

    public static class Qwert{


        private Qwert() {}

        public static void main(String args[]){

            int x = 12;
            while(x<12){
                x--;
            }
            System.out.println(" the X value is : "+ x);
        }
    }
8
ответ дан 28 November 2019 в 22:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: