Вопрос по переопределению метода

package Animal;

public class Animal {
    private int mass;
    private String color;

    Animal() {
    }

    Animal(int mass, String color) {
        this.mass = mass;
        this.color = color;
    }

    public void roar() {
        System.out.println("bark-bark");
    }

    void about() {
        System.out.println(this.mass + "" + this.color);
    }


    @Override
    public String toString() {
        return "Animal{" +
                "mass=" + mass +
                ", color='" + color + '\'' +
                '}';
    }
}


package Animal;

public class Dinosaur extends Animal {
    int weight;

    Dinosaur() {
    }

    Dinosaur(int mass, String color, int weight) {
        super();
        this.weight = weight;
    }
    @Override
    public void roar(){
        System.out.println("pur-pur");
    }

    @Override
    void about() {
        super.about();
        System.out.println("и еще чуть-чуть");
    }

    @Override
    public String toString() {
        return super.toString();
    }

}

package Animal;

public class main {
    public static void main(String[] args) {
        Animal animal = new Animal(50, "red");
        Dinosaur dino = new Dinosaur(500,"green",50);

        animal.roar();
        dino.roar();

        animal.about();
        dino.about();

        System.out.println(animal);
        System.out.println(dino);
    }
}

Метод About() переопределен, экземпляр класса создан и данные внесены. Почему метод dino.about() работает, но выдает :

0null

?

Что забыто и куда добавить?


Ответы (1 шт):

Автор решения: Aziz Umarov

Ошибка тут

  Dinosaur(int mass, String color, int weight) {
    super(mass, color);
    this.weight = weight;
  }

Вы вызвали конструктор super(); который как раз таки не инициализирует переменные

Animal() {
    }
→ Ссылка