Объявление класса class Cat //класс { String name; //обычная переменная static int catCount; //статическая переменная Cat(String name) { this.name = name; Cat.catCount++; //увеличиваем значение статический переменной на 1 } } Код в методе main: System.out.println(Cat.catCount); Cat cat1 = new Cat("Vaska"); System.out.println(Cat.catCount); Cat cat2 = new Cat("Murka"); System.out.println(cat1.name); System.out.println(cat2.name); System.out.println(Cat.catCount); Вывод на экран будет таким: 0 1 Vaska Murka 2 Лучше побыть дураком пять минут... Вопрос о втором примере сверху (где добавили счетчик) "catCount++". Т. е. счетчик увеличивает значение при обращении (путем вызова переменной cat1(или cat2) на которую ссылается объект) к объекту класса "Cat" и его имени "name" (так как эта переменная не статическая и имеется у любого созданного объекта по умолчанию). Остедова вопрос: Отчего Вывод на экран в пятой строчке принимает значение "2", а не "4", ведь обращение к двум объектам происходит по два раза - значит при каждом обращении должно увеличиваться значение статической переменной "catCount++"? Помогите разобраться в каком месте умовыводов я ошибся, почему. Объясните пожалуйста ! Ввел в программе - все правильно, как в примере, а не как я думаю. Правильным ли тогда стоит считать вывод, что при обращении к имени объекта (System.out.println(cat1.name);) счетчик не срабатывает? Но почему, имя же не оторвано от объекта ? Или счетчик срабатывает ТОЛЬКО при создании объекта ? Запутался. Распутайте где правильно, а где нужно вычеркнуть и забыть!