Похоже, что компилятор пытается создать вызов конструктора по умолчанию для суперклассов с super()
, который недоступен:
required: int
found: no arguments
Но вернемся к вашей книге: я никогда не слышал оправило, в котором вы можете пропустить оператор super
в конструкторе, если фактический конструктор имеет тот же список параметров, что и конструктор в прямом суперклассе.Только вызов конструктора суперкласса по умолчанию добавляется неявно (super()
), но для этого требуется, чтобы суперкласс имел конструктор по умолчанию.
В отличие от того, что написано в вашей книге (или вв отличие от вашего понимания написанного текста), вот предложение из спецификации языка:
Если тело конструктора не начинается с явного вызова конструктора, и объявленный конструктор не является частью изначальногоclass Object, то тело конструктора неявно предполагает, что компилятор начинает с вызова конструктора суперкласса «super ();» , вызова конструктора его прямого суперкласса, который не принимает аргументов.