Вы должны понимать, что интерфейс Java - это контракт : объект, реализующий интерфейс, обещает представить все вещи в интерфейсе!
На что еще способен объект, не имеет отношения к этому конкретному интерфейсу, и на самом деле часто случается, что для данного интерфейса существует несколько возможных кандидатов, и вызывающему коду в основном не важно (или нужно заботиться), какой он получает.
В случае JDBC вы запрашиваете соединение с базой данных, и DriverManager выбирает его в соответствии с переданной вами строкой и возвращает его вам.Все вы нужно знать, что один вы получаете имеют все методы, перечисленные в договоре интерфейса подключения, который вы можете использовать, как вам нужно.
1012 * Таким образом, когда интерфейс, используемый наЛЕВАЯ сторона при назначении означает, что вы можете получить любой объект, если он реализует интерфейс.Когда класс используется слева, вы должны представить объект этого класса (или подкласса), который оказался гораздо более ограничительным.