Объясните, пожалуйста, почему методы инициализации должны быть в данном случае обязательно public и почему переменные класса не обязательно указывать как static. До этого момента считал, что всё должно быть наоборот - переменные класса всегда static а методы нужны public только для возможности вызова из других классов (у нас же он единственный)