Классовые (статические) методы не переопределяются как методы экземпляра.Когда вы вызываете метод 'hello ()', он будет использовать метод родителя.Когда вы ссылаетесь на метод класса, вы ссылаетесь на метод, определенный в классе 'Parent'.
Кроме того, вы должны объявить свой экземпляр Child как «Parent c = new Child ()».Поскольку вы не добавляете новые методы в свой подкласс, а скорее меняете реализацию, вы не теряете доступ к методам подкласса.Если вам понадобится метод, который возвращает родительский объект, но вы вернете дочерний объект, объявленный, как вы это сделали, у вас возникнут проблемы.
РЕДАКТИРОВАТЬ: Чтобы добавить к этому, как правило, есть 2 причины использовать наследование: специализация и расширение.
Для специализации вы используете определения своих методов в своем суперклассе, и ваши подклассы отличаются тем, как они реализуют эти методы.Например, суперкласс Animal с подклассами Cat и Dog.«Животное» имеет метод makeSound()
.Вы можете представить, что оба подкласса будут иметь различную реализацию.
Для расширения вы используете суперкласс в качестве базового класса, содержащего все, что перекрывается.Помимо этого, подклассы могут иметь очень разные реализации и использования.Многие интерфейсы имеют такой вид использования.