override
полезен в том случае, когда вы можете создать новый метод не переопределяет существующий метод, не зная:
abstract class Car { def drive(distance: Integer) : Unit }
без override
:
abstract class BMW extends Car { def drive(distance: Int) = println("I'm driving") }
с override
:
scala> abstract class BMW extends Car { override def drive(distance: Int) = println("I'm driving") }
<console>:8: error: method drive overrides nothing.
Note: the super classes of class BMW contain the following, non final members named drive:
def drive(distance: Integer): Unit
abstract class BMW extends Car { override def drive(distance: Int) = println("I'm driving") }
^
В случае abstract
метод override
ключевое слово не очень полезно, но это может быть хорошей практикой override
даже абстрактные методы только в случае. Это зависит от соглашений в проекте.
ключевое слово для абстрактных методов дает читателю понять, что этот метод определен в родительском классе/признаке, не обращаясь к объявлению родительского класса.
Мне нужно, чтобы мои программисты использовали 'override' * только *, когда он фактически переопределяет унаследованную реализацию. –
@ RandallSchulz почему? Вы можете объяснить ? – MadSeb
Есть случаи, когда вы можете использовать ключевое слово 'override', хотя ничто не переопределяется. Я нахожу это вводящим в заблуждение и требую, чтобы это не было сделано в нашей базе кода. –