Это называется явной реализацией интерфейса. Но если вы напишите свой класс так, он будет работать нормально:
class MySqlConnection : IDatabase
{
public void connect()
{
...
}
public void update()
{
connect(); // here
...
}
}
Обратите внимание, что методы реализованы как публичные методы.
Явная реализация делает их недоступными везде, даже внутри самого класса. Вот почему вы не можете использовать ключевое слово private
при их объявлении. Тем не менее, они могут быть доступны "публично" через интерфейс. Если по какой-то веской причине вы действительно хотите использовать явные реализации, вы можете привести к интерфейсу и вызвать оттуда:
((IDatabase)this).connect();