Как разобраться с конструкторами?
1) Box catBox;   // объявили переменную с типом Box и именем catBox (просто объявили, в ней ничего нет)
2) new Box();     // создали новый объект типа Box (и бросили)
3) catBox = new Box();    // создали новый объект типа Box и сказали, что с ним можно пообщаться используя 3) переменную catBox
4) Box catBox = new Box(); // объявили переменную и сразу с ней связали объект
Первый Box - тип объявленной переменной.
Второй Box - создается иснстанс класса, через вызов конструктора по умолчанию.