• Где размещать переменные: класс или метод?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    #1 от #2 отличаются только явной инициализацией переменной во втором случае. В первом - она инициализируется при создании объекта.
    #3 и #4 сами по себе вполне корректны, но бессмыслены: ht, я так понимаю - рост кошки. Нет никакого смысла переносить эту переменную внутрь метода. Метода может и не быть, а рост, видимо, быть должен. Кроме того, если бы в классе Cat были еще какие-то методы (например int getHeight() ), то они не имели возможность получить доступ к этой переменной в последних случаях.

    Вот еще пример:
    public class Cat {
        int height;
    
        public int getHeight() {
            return height;               //Все ок переменную видно.
        }
    
        public void setHeight(int height) {
            this.height = height;    //Все ок переменную видно. this.height - эта переменная, обозначенная в классе.
        }
    
        public void setInternalVar(int var) {
            int internalVar = var;   //Все ок, но переменная скрыта внутри метода
        }
        
        public int getInternalVar() {
            return internalVar;   // !!Не компилируется  - переменная internalVar не определена внутри класса.
        }
    }
    Ответ написан
    Комментировать
  • Где размещать переменные: класс или метод?

    @Quieteroks
    php программист
    Переменные в методе, на то они и переменные.
    Поля класса в классе, на то они и поля.

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

    Почитайте про ООП в целом. Тут Вам поможет понимание инкапсуляции. Все, что не инкапсулируется, может быть объявлено как переменная в области видимости конкретного метода. А уровень доступа к переменной очень хорошо объясняется путем понимания области видимости.
    Ответ написан
    Комментировать
  • Где размещать переменные: класс или метод?

    compilator
    @compilator
    Senior Data Engineer
    Внутри метода размещаются переменные, которые необходимы и будут использоваться только во время выполнение этого метода. Внутри класса размещаются переменные, которые говорят о состоянии объекта, порожденного из этого класса. И как правило эти переменные делают приватными + создают геттеры и сеттеры для них. В вашем примере, размер кошки говорит о ее "состоянии", поэтому разумно хранить переменную в классе.

    public class Cat {
    private int size;

    public int getSize() {
    return size;
    }

    public void setSize(int size) {
    if(size <= 9) throw new IllegalArgumentException("Cat size should be more than 9");
    this.size = size;
    }
    }
    Ответ написан
    Комментировать