Смотрите, на примере первой инициализации:
public class Cat {
    String name = null;
    int age = 2;
    int weight = 2;
    String address = null;
    String color;

    public void initialize(String name){
        this.name = name;
        this.age = 1;
        this.weight = 4;
        this.color = "black";}
Почему не проходит валидация, если написать таким образом:?
public void initialize(String name){
        this.name = name;
        this.age = age;
        this.weight = weight;
        this.color = color;
}
По логике оно же должно присваивать как раз "усредненные" значения, прописанные в начале при объявлении переменных? Или если не должно, то зачем тогда указывать значения при объявлении переменных, если мы потом указываем точные значения при инициализации?