Имеет смысл, что квадрат принимает только один аргумент - длину одной из его сторон. Но если квадрат является типом многоугольника, то для многоугольников здесь требуется два аргумента, высота и ширина.
Если создается экземпляр Square, ему необходимо вызвать super
, чтобы запустить конструктор Polygon, который ожидает два аргумента, height
и width
. В конструкторе Square
они одинаковы - переменная length
, следовательно, вызов
super(length, length);
Пример 4 отличается, потому что это Rectangle
, а не Square
. Прямоугольники принимают два аргумента, высоту и ширину, как и Polygons, поэтому и конструктор Rectangle
, и конструктор Polygon
вызываются с помощью (height, width)
, а вызов super
отражает, что:
super(height, width);