Тъй като и двата класа присъстваха във вашия път на класа по време на компилиране и вашата IDE се опитваше да бъде полезна.
Тъй като prepareStatement() е посочено
да върне java.sql.PreparedStatement , а не com.mysql.jdbc.PreparedStatement .
java.sql.PreparedStatement е синтерфейс и трябва да използвате това през цялото време. MySQL е конкретна реализация и не трябва да свързвате тясно своя JDBC код със специфичната реализация на MySQL. В противен случай ще трябва да направите много промени в кода си, ако някога искате да превключите DB сървъра (и по този начин също и JDBC драйвера) към друг доставчик като PostgreSQL. Ако използвате стандартните JDBC интерфейси от java.sql пакет през цялото време, всичко, което ще трябва да промените, е само URL адреса на JDBC и може би също потребителското име и парола и някои специфични за DB SQL изрази.