Vehicle в вашем примере является "уточнением" класса Car. Car более абстрактное, широкое понятие, в то время как Vehicle - более конкретное.
На другом примере: есть класс Food и его классы-наследники: IceCream, Pizza, Cookie. Food - это нечто общее, категория, обобщение. А IceCream, Pizza и Cookie - уточнения. Со всеми этими тремя классами-наследниками мы можем работать одинаково, как с Food. И если у класса Food есть метод getCalories(), то его можно будет вызвать и у IceCream, Pizza и Cookie.
В коде это будет выглядеть так:
Food iceCream = new IceCream();
int calories = iceCream.getCalories();
Но если у IceCream есть метод, который присущ только ему, а в Food его нету (например, метод getBallCount(), типа количество шариков в мороженом), тогда, чтобы использовать этот метод, придётся и слева написать тип IceCream. То есть:
IceCream iceCream = new IceCream();
int ballCount = iceCream.getBallCount();
Если вы интересуетесь, зачем делать так, как в первом примере кода, то рекомендую вам познакомиться поближе с идеями ООП, это очень занимательно. Про его базовые идеи можно почитать
тут