мой пример сеттера (инкапсуляция)

117
05 января 2020, 10:20
public class Human {
    private String name;
    private int age;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        if (age >=0){
            this.age = age;
        } else {
            System.out.println("Ошибка! Возраст не может быть отрицательным числом!");
        }
    }
    public int getWeight() {
        return weight;
    }
    public void setWeight(int weight) {
        this.weight = weight;
    }
}

public class Qwerty {
    public static void main(String[] args) {
        Human h1 = new Human();
        h1.setAge(-2);
        System.out.println(h1.getAge());
    }
}

Не пойму почему выводит:

0 После Ошибка! Возраст не может быть отрицательным числом!
Answer 1

Что делаете, то и получаете.

Вы пытаетесь возраст задать в виде отрицательного числа

h1.setAge(-2);
          ^^

Поэтому метод

public void setAge(int age) {
    if (age >=0){
        this.age = age;
    } else {
        System.out.println("Ошибка! Возраст не может быть отрицательным числом!");
    }
}

выводит соответствующее сообщение на консоль.

После чего вы выводите текущее значение возраста

System.out.println(h1.getAge());

которое по умолчанию при создании объекта класса было инициализировано 0.

Обратите внимание, что вы забыли объявить поле weight в определении класса.

READ ALSO
Hibernate разница между Session и EntityManager

Hibernate разница между Session и EntityManager

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

144
Какой тип данных в SQL создавать?

Какой тип данных в SQL создавать?

У меня есть @Entity класс "Account"Также, у меня есть @Entity класс "Transaction", который содержит 2 поля :

122