/Написать код, чтобы правильно считалось количество созданных котов (count) и на экран выдавалось правильное их количество. /

public class Solution {
    public static void main(String[] args) {
        Cat cat1 = new Cat();
        cat1.count = 1;//напишите тут ваш код

        Cat cat2 = new Cat();
        cat2.count = 2;//напишите тут ваш код

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

    public static class Cat {
        public static int count = 0;
    }
}

Столкнулся с таким вопросом: когда мы создали объект класса Cat, а затем написали cat1.count = 1, то
почему-то меняется значение именно переменной count. Разве не должна создаваться копия переменной count?

задан 20 Мар, 13:46

Barny's gravatar image

Barny
424
одобрено: 0%

изменено 20 Мар, 13:46


Переменная count статическая, поэтому она общая для всех экземпляров класса. Если бы не было статика, то у каждого экземпляра класса она была бы своя, и соответственно свое значение

ссылка

опубликован 21 Мар, 06:57

EleNikIvi's gravatar image

EleNikIvi
1.9k127
одобрено: 35%

У тебя же нету конструктора, который присваивал бы созданным котам новые значения. Ты создаешь кота без параметров, у него нет не имени ни каких либо других данных, есть только переменная в классе Cat которая меняется в зависимости от того, какое значение ты ей присвоишь, независимо от котов.

ссылка

опубликован 20 Мар, 16:37

BargystVelp's gravatar image

BargystVelp
693
одобрено: 50%

изменено 20 Мар, 17:11

1

Я не уверен, поэтому ты на мои знания особо не расчитывай, но объясню как я это понимаю. Ты можешь создать конструктор и корректировать в нем переменную count но она единственная переменная на весь класс, если например можно создать String name и создавая котов давать им имена, то static String name уже будет общей переменной для всех. И независимо от того с какой ссылки (С какого кота) ты будешь к ней обращаться - результат будет один.

(21 Мар, 06:17) BargystVelp

Возможно и так. А может такое быть из-за того, что переменная count статическая?

(21 Мар, 04:14) Barny
Ваш ответ
включить просмотр

Следить за вопросом

По Email:

После авторизации вы сможете подписаться на любые обновления здесь

Основы Markdown

  • *italic* or _italic_
  • **bold** or __bold__
  • ссылка:[текст](http://url.com/ "заголовок")
  • изображение?![alt текст](/path/img.jpg "заголовок")
  • нумерованный список: 1. Foo 2. Bar
  • Для того чтобы добавить разрыв строки просто добавьте два пробела.
  • основные HTML тэги, также поддерживаются

Тэги:

×396

Задан: 20 Мар, 13:46

Просмотров: 79 раз

Отредактирован: 21 Мар, 06:57