A child class could never remove a parameter type from a method it overrides, even though accepting more than the parent is safe by the same rule that lets a return type be narrowed. 7.2 allows the omission.
class Repository
{
public function save(Model $model) { /* ... */ }
}
class FlexibleRepository extends Repository
{
public function save($model) { /* accepts anything — legal in 7.2 */ }
}
This is a migration aid rather than a design tool: it exists so a library can add types to a base class without breaking every implementation downstream. Using it deliberately produces a subclass with a weaker contract than its parent, which is legal and is exactly the thing type hints were added to prevent.