Этот метод переопределяет метод attributes()
родительского класса, но вызов подобного родительского метода позволяет дочернему классу повторно использовать код в родительском методе для получения $product
, прежде чем делать с ним свою собственную вещь. Вы можете думать об этом как о расширении родительского метода, а не о его переопределении.
В этом нет необходимости, вы можете переопределить метод родительского класса и заставить его делать что-то совершенно другое, но часто бывает полезно сделать это таким образом, чтобы избежать дублирования кода между двумя классами.