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