Ну значит очевидно, что квадрат унаследован от прямоугольника)
можно и не наследоваться, достаточно, чтобы они реализовывали общий интерфейс. Потому как квадрату нужно только 1 поле - "сторона", в то время, как у прямоугольника их должно быть 2, даже если они одинаковые. Таким образом, если мы отнаследуемся от прямоугольника, нам придется добавить поле "сторона", и заоверрайдить конструктор и метод, который считает, допустим, периметр. И смысла от такого наследования, по-сути, не будет. То ли дело, если у нас будет интерфейс iPerimeter, тогда обе фигуры могут спокойно его себе имплементировать