Здравствуйте! Я правильно понимаю значение этой фразы IUser user = new User();
создается объект класса User с типом IUser?
Что дает этот тип IUser - определяет доступные члены для объекта?
Я это спрашиваю к тому что, мне не понятно то что, Object является базовым классом для всех типов, но для интерфейса IUser Object не является базовым, а переменная user имеет тип IUser, так почему же у переменной user доступны методы из Object ?
В C# класс(User, Object) определяет реализацию и тип одновременно. Интерфейс(IUser) определяет только тип. Один объект может иметь несколько типов. В свою очередь один тип может иметь несколько реализаций.
У созданого вами объекта есть как минимум три типа: User, IUser и Object.
Т.к. все классы в C# наследуются от Object(а значит все объекты имеют его тип), компилятор знает об этом заранее и поэтому дает возможность вызывать методы декларированные в Object из переменной любого типа.
в переменной user лежит ссылка на созданный объект с типом User, так? т.е получается что ссылка переменная является типом IUser, а объект в памяти имеет тип User, так?