Alex Rivera | Logout

Why do I get an error instantiating an interface?

Asked 2011-07-07T13:32:08.813
61

I have a class and an interface, and when I try to instantiate the interface, I get an error:

Cannot create an instance of the abstract class or interface

My code is below:

namespace MyNamespace
{
    public interface IUser
    {
        int Property1 { get; set; }
        string Property2 { get; set; }
        string Property3 { get; set; }
        void GetUser();
    }

    public class User : IUser
    {
        public int Property1 { get; set; }
        public string Property2 { get; set; }
        public string Property3 { get; set; }

        public void GetUser()
        {
           //some logic here...... 
        }

    }
}

When I try to instantiate IUser user = new IUser(); I get an error:

Cannot create an instance of the abstract class or interface

What am I doing wrong here?

Edit
Report

2 Answers

19

IUser is the interface, you can't instantiate the interface.

You need to instantiate the concrete class that implements the interface.

IUser user = new User();

or

User user = new User();
answered 2011-07-07T13:35:36.403
10

You can't instantiate interfaces or abstract classes.

That's because it wouldn't have any logic to it.

Interfaces provide a contract of the methods that should be in a class, without implementation. (So there's no actual logic in the interface).

Abstract classes provide basic logic of a class, but are not fully functional (not everything is implemented). So again, you won't be able to do anything with it.

answered 2011-07-07T13:38:37.713

Your Answer