Статические классы и методы

Открыта

— Кроме статических методов есть ещё и статические классы. Что это такое мы рассмотрим в будущем, я лишь покажу пример, что такое может быть:

Пример
public class StaticClassExample
{
    private static int catCount = 0;

    public static void main(String[] args) throws Exception
    {
        Cat vaska = new Cat("Bella");
        Cat murka = new Cat("Tiger");

        System.out.println("Cat count " + catCount);
    }

    public static class Cat
    {
        private String name;

        public Cat(String name)
        {
            this.name = name;
            StaticClassExample.catCount++;
        }
    }

}
2
Задача
Java Syntax,  6 уровень,  7 лекция
Недоступна
Набираем код
Внимание! Объявляется набор кода на JavaRush. Для этого включите режим повышенной внимательности, расслабьте пальцы, читайте код и… набирайте его в соответствующем окошке. Набор кода — вовсе не бесполезное занятие, как может показаться на первый взгляд: благодаря ему новичок привыкает к синтаксису и запоминает его (современные IDE редко дают ему это сделать).

— Объектов класса Cat можно создавать сколько угодно. В отличие от, например, статической переменной, которая существует в единственном экземпляре.

— Основной смысл модификатора static перед объявлением класса — это регулирование отношения класса Cat к классу StaticClassExample. Смысл примерно такой: класс Cat не привязан к объектам класса StaticClassExample, и не может обращаться к обычным (нестатическим) переменным класса StaticClassExample.

— Значит, я могу создавать классы внутри других классов?

— Да. Java такое позволяет. Не слишком задумывайся об этом сейчас. В будущем я объясню еще некоторые вещи, и все станет немного проще.

— Надеюсь.

Комментарии (86)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Андрій6 уровень, Киев
позавчера, 20:23
..... и я надеюсь
Артём7 уровень, Казань
позавчера, 12:06
вот же я пень тормознутый. чтобы тему понять, приходить перечитать статью, читать параллельно книгу Шилдта, смотрел кучу видосов по каждой теме.
Артём7 уровень, Казань
позавчера, 12:06
и то в итоге многое не понимаю
Alexey Prilessky7 уровень, Минск
понедельник, 17:32
Каким образом класс Cat получил доступ к приватной переменной класса StaticClassExample?
Дмитрий7 уровень, Москва
позавчера, 16:26
поскольку private поля доступны в любом месте внутри класса так как класс Cat находится внутри класса StaticClassExample, он имеет доступ ко всем полям этого класса, но не наоборот, то есть private поля класса Cat недоступны из класса StaticClassExample
Alexey Prilessky7 уровень, Минск
позавчера, 16:43
Аааа, я не сразу заметил, что класс Cat находится внутри первого класса. Спасибо !
Eugene Kim7 уровень
10 сентября, 10:40
Блин пример что не принимают вроде все точь в точь ввел : - (
Виталий8 уровень, Санкт-Петербург
21 августа, 21:21
Слава богу, освоил слепую печать на английской раскладке перед обучением JAVA.
Юля Новикова13 уровень, Костанай
26 августа, 10:18
Тоже надо.... Освоить...
Валихан10 уровень, Санкт-Петербург
20 августа, 18:06
что-то не проходит у меня, с телефона сижу, позже попробую с компа
Людмила11 уровень
4 июля, 06:34
Добрый день. В После ручного ввода текста при тщательнейшей проверке каждой буквы все равно окрас оставался розовым. Вспомнила, что подобное уже было и ранее я просто скопировала текст примера и когда вставила его- то все прошло. Поэтому после этой лекции повторила этот прием, исправив в соответствии с заданием. Обнаружила в Экселе- просто написала формулу сравнения двух ячеек - мой введенный текст и скопированный. Я часто пользуюсь этим приемом для поиска несоответствий.
4 июля, 20:39
Спасибо! Помогло!
Людмила11 уровень
2 июля, 05:18
всем привет. Опять при повторе кода возникли ошибки. Стала сравнивать текст из лекции и в упражнении и после небольших исправлений выяснила, что разница в пробелах после точки с запятой. Мне кажется это неправильным. Если левые пробелы оправданы и приучают к написанию читабельного кода, то правые к чему? Почему бы не сделать Rtrim при проверке?
3 июля, 21:16
Подскажите, где там пробелы надо ставить дополнительные, и как вы их обнаружили?
Людмила11 уровень
4 июля, 06:38
точно не могу сказать где в какой строке- кажется в каждой перед точкой с запятой. Я только обнаружила проблему своих ошибок и нашла решение для себя. Можно было бы попросить исправить, но не думаю, что это принципиально.
Kai Anonyma22 уровень, Izhevsk
21 июля, 18:29
Я вы код набирайте, а не копируйте. И будет вам счастье.
Людмила11 уровень
24 июля, 04:25
А Вы сами пробовали именно набирать? Попроубуйте!
Учиха Шисуи8 уровень, Новосибирск
31 августа, 12:31
Для того (как и было выше написано, разрабами сайта) и существуют эти задания. Чтобы вы ручками привыкали печатать;) Вы уж извините, если обидел) скажу и от себя, какую ошибку я обнаружил: Если вы пишете код в соответствии со стандартами, и не переносите открывающую фигурную скобку (начало блока кода) на новую строку, то перед этой скобкой, обязательно необходимо ввести пробел. Пример(вместо пробела в нужном месте - нижнее подчеркивание) :
public static void main (String[] args)_{
...
}
А вообще, не халтурьте;) всего вам доброго)
Учиха Шисуи8 уровень, Новосибирск
31 августа, 12:33
Категорически плюсую) выпал с ответа девушки))))
Ольга9 уровень, Киев
1 сентября, 10:33
В соответствии со стандартами, фигурную скобку не нужно переносить? И в классах и в функциях?
Учиха Шисуи8 уровень, Новосибирск
1 сентября, 11:27
Переносить открывающую скобку, считается правилами дурного тона. На работоспособность программы, это никак не влияет. Если же мы говорим об эмуляторе среды разработки, то в том случае, если вы таки переносите скобку, обязательно поставьте перед ней пробел. В таком случае валидатор не посчитает это за ошибку. Повторюсь: В IDEA ТАКИХ ЗАМОРОЧЕК НЕТ, ЭТО ПРОБЛЕМЫ ЛИШЬ МЕСТНОГО ЭМУЛЯТОРА
Ольга9 уровень, Киев
1 сентября, 12:25
Спасибо, не знала, часто переносила скобку, теперь буду убирать дурной тон)
Денис9 уровень, Москва
28 мая, 10:17
private static int catCount = 0;
Почему не в классе Cat объявлена, инициализирована статическая переменная о котах?
Danil Guschin19 уровень
12 июня, 16:09
Чтобы показать, что к статическим переменным класса StaticClassExample можно обращаться, и никто не запрещает эту переменную разместить в том классе.
GigaMax12 уровень
25 апреля, 16:33
подробнее бы)