43
Reply

What’s the difference between an interface and abstract class?

nikhil kansal

nikhil kansal

18y
128.2k
0
Reply

    abstract class contain the data member and member funtion.

    1. Abstract classes can have implementations for some of its members, but the interface can't have implementation for any of its members.

    2.Interfaces cannot have fields where as an abstract class can have fields.

    3. An interface can inherit from another interface only and cannot inherit from an abstract class, where as an abstract class can inherit from another abstract class or another interface.

    4. A class can inherit from multiple interfaces at the same time, where as a class cannot inherit from multiple classes at the same time.

    5. Abstract can have access modifiers where as interface members cannot have access modifiers.
    projects for computer science

    Well,OK.I have to say,what a wonderful blog it is.thank you for your sharing so good articles in the website.I like it very much.<A href="http://www.dressiton.com/special-occasion-dresses-2/sexy-dresses.html">sexy dresses</A>

    An abstract class is a class that can not be instantiated but that can contain code.
    An interface only contains method definitions but does not contain any code. With an interface, you need to implement all the methods defined in the interface.

    If you have logic that will be the same for all the derived classes, it is best to go for a abstract class in stead of an interface.

    You can implement multiple interfaces but only inherit from one class.

    ________________________________________________________________

    Abroad Consultants in India

    Interface: Java Interfaces are equivalent to protocols. They basically represent an agreed-upon behavior to facilitate interaction between unrelated objects. For example, the buttons on a Remote Controller form the interface for outside world to interact with TV. How this interface is implemented by different vendors is not specified and you’re hardly aware of or bothered about how these buttons have been implemented to work internally. Interface is plainly a contract between the producer and the consumer. How the producer implements the exposed behavior is normally not cared by the consumer.

    Abstract Class: In Java, abstract class is a class which has been declared ‘abstract’. By declaring ‘abstract’ we ensure that the class can’t be instantiated. Why to have such a class then? Because, you would not be having implementation of all the methods in that class and you need to leave it to the subclass to decide how to implement them. In this case, there is no point instantiating an incomplete class.

    __________________________________________________________
    Abroad Consultants in India

    Interface: Java Interfaces are equivalent to protocols. They basically represent an agreed-upon behavior to facilitate interaction between unrelated objects. For example, the buttons on a Remote Controller form the interface for outside world to interact with TV. How this interface is implemented by different vendors is not specified and you’re hardly aware of or bothered about how these buttons have been implemented to work internally. Interface is plainly a contract between the producer and the consumer. How the producer implements the exposed behavior is normally not cared by the consumer.

    Abstract Class: In Java, abstract class is a class which has been declared ‘abstract’. By declaring ‘abstract’ we ensure that the class can’t be instantiated. Why to have such a class then? Because, you would not be having implementation of all the methods in that class and you need to leave it to the subclass to decide how to implement them. In this case, there is no point instantiating an incomplete class.

    Interface: It gives the signature for its memeber like (methods, properties, indexer and events),

    It does't allow you to define fields (Ex. int a).

    All members in interface are not using any king of access specifier(public, private, protectec, internal etc..).

    During implementation the members should be public.

    By default all member are virtual so need to use virtual keyword.

    Abstract: Class it can contain abstract method(that should be implemented in derived class) and other methods which can use access specifier. It allows to define datatype(ex. int inta). It can't be instantiated

    the method which are going to implement those member should use abstract keyword

    Interface can not have scope modifiers while Abstract classes can have scope modifiers

    Abstract Class: A class that cannot be instantiated. An abstract class is a class that must be inherited and have the methods overridden. An abstract class is essentially a blueprint for a class without any implementation.

    Interface: Interfaces like classes define a set of properties methods and events. But unlike classes interfaces do not provide implementation. They are implemented by classes and defined as separate entities from classes

    Abstract class act like a half defined class

    While interface are for standardization and enforcement.

    .NET Interview questions

    Abstract class is a special kind of class which can not be
    instantiated while Interface is an Entity. You can define
    some methods in Abstract class but can not in interface

    For more detail see at

    http://interview-preparation-for-you.blogspot.com/2010/10/difference-between-abstract-class-and.html






    Interface is the syntotical contract that all the derived class should follow.

    It contains methods,events and properties which are known as interface members.
    It is to be noted that,interface should contain only declaration of members.
    classses and structures can implement interface members.
    interface enable multiple inheritance.



    Abstract class can be inherited
    we cannot declare abstract method outside abstract class
    abstract class cannot be declared sealed.
    abstract method is a method without any body.

    First, no method and property can't implementation in the interface but in abstract class you can implementation such of method or property

    Second, interface has any constructor but abstract class can has.

    third, you can inherits of some interface but you can inherits of one class or abstract class

    I am bit late here most of points are considered above but I want to give my views as :


    1. Abstract classes contain constructor While interface do not
    2. Default constructor modifier is Protected of Abstract classes
    3. We can apply constructor chaining with Abstract classes

    There are two basic difference between Abstract class and Interface:-

    1. Abstract class provides 0 to 100% generalization while Interface provides 100% generalization.
    2. Abstract class provides generalization and specialization both but Interface provides only Generalization

    Interface : 

     - In an interface is a class and all methods are abstract
     - No need access modifier, default public.
    Abstract  :
    - In an interface is a class and all methods are concrete
    - may have access modifier

    You can find more information at Asp.net 3.5 Interview Questions

    Interfaces provide a form of multiple inheritance. A class 
    can extend only one other class. 
    Interfaces are limited to public methods and constants with 
    no implementation. Abstract classes can have a partial 
    implementation, protected parts, static methods, etc. 
    A Class may implement several interfaces. But in case of 
    abstract class, a class may extend only one abstract class. 
    Interfaces are slow as it requires extra indirection to to 
    find corresponding method in in the actual class. Abstract 
    classes are fast.

    See if this Article Helps which in details covers difference bot programatically and theoratically.

    http://www.c-sharpcorner.com/UploadFile/prasoonk/AbstractClassvsInterface06102009051117AM/AbstractClassvsInterface.aspx

    for .net interview question and answers

    pls visit my blog

    satyakishore.webs.com

    Hi,

    Abstract class is the Act sa the base class,It supports implmented methods and unimplimented methods,Abstract calss as followes on derived class.
    in Abstract class you can Declare the Constructors,fields,methods,indexes,destructors etc
    Example:
    pulic Abstract Class A
    {
    public void Hi();

    public void Hello()
    {
    Console.WriteLine("hello method");
    }

    }
    public Class B
    {
    public overid void Hi()
    {
    Console.WriteLine("hi method");
    }
    }
    Interface: Interface is the Collection of Abstrcted method is called interface,By default is the Public
    in interface  you can not  Declare the Constructors,fields,methods,indexes,destructors .
    Examples:'
    //mutltiple inhiritance
    Interface IA
    {
    void cat();
    void Dog();
    }
    Interface IB
    {
    void door();
    void tyres();
    }
    public class C:IA,IB
    {
    public void cat()
    {
    Console.WriteLine("hello cat method");
    }
    public void dog()
    {
    Console.WriteLine("hello dog method");
    }
    public void door()
    {
    Console.WriteLine("hello door method");
    }
    public void tyres()
    {
    Console.WriteLine("hello tyres method");
    }
    }

     

    Interface are similar to abstraction classes.However , interfaces represent the higest level of abstraction in Object- oriented programming.This is because all the methods in an interface are abstract and do not have implementation.In contrast ,the abstract classes might contain a method that has a body.

    1).Interface have only signature. whereas Abstract class have signature and definition both r allow. 2). Interface have not allow modifier access. whereas Abstract class are allowed modifier access. 3).Thurogh the Interface we can create the Multiple Inheritance whereas Abstract class are not allow the Multiple Inheritance. 4).Interface is slower compare Abstract class.

    Interface:- 1. Interfaces are used to declaring functionality. 2. By default all interface methods are public. 3. In class you can implement the interface method, but can’t implement the body in Interface method. Abstract:- 1. Abstract will allow you to set the access specifier. Ex:- (private,public, protected, internal). 2. Abstract will allow you to implement the body in abstract methods. 3. You can inherit the abstract methods in classes.

    in an interface class, all the methods are abstract, these is no implementation,and no accessbility modifiers are allowed, in an abstract class, some of the methods can be concrete,an abstract class may have some accessbility modifiers.

    An abstract class may contain complete or incomplete methods. Interfaces can contain only the signature of a method but no body. Thus an abstract class can implement methods but an interface can not implement methods. · An abstract class can contain fields, constructors, or destructors and implement properties. An interface can not contain fields, constructors, or destructors and it has only the property's signature but no implementation. · An abstract class cannot support multiple inheritance, but an interface can support multiple inheritance. Thus a class may inherit several interfaces but only one abstract class. · A class implementing an interface has to implement all the methods of the interface, but the same is not required in the case of an abstract Class. · Various access modifiers such as abstract, protected, internal, public, virtual, etc. are useful in abstract Classes but not in interfaces.

    An abstract class may contain complete or incomplete methods. Interfaces can contain only the signature of a method but no body. Thus an abstract class can implement methods but an interface can not implement methods. · An abstract class can contain fields, constructors, or destructors and implement properties. An interface can not contain fields, constructors, or destructors and it has only the property's signature but no implementation. · An abstract class cannot support multiple inheritance, but an interface can support multiple inheritance. Thus a class may inherit several interfaces but only one abstract class. · A class implementing an interface has to implement all the methods of the interface, but the same is not required in the case of an abstract Class. · Various access modifiers such as abstract, protected, internal, public, virtual, etc. are useful in abstract Classes but not in interfaces.

    Check out Interview Questions and Answers for a perfect answer to this question.

    In a interface class, all methods are abstract without implementation where as in an abstract class some methods we can define concrete. In interface, no accessibility modifiers are allowed. An abstract class may have accessibility modifiers. Interface and abstract class are basically a set of rules which u have to follow in case u r using them(inheriting them).



    1. Abstract classes can have concrete method while interfaces have no methods implemented.
    2. Interface do not come in inheriting chain, while abstract class come in inheritance.
    3. Abstract classes are faster than interfaces.
    4. By default, all members in Interface is Public whereas members in Abstract class may have different.

    More .NET Questions and Answers

    Interface only implementaion ,it is fully abstact classes.

    Abstract is not implemented class,it is only inherited class

    16y
    0

    An abstract class may contain complete or incomplete methods. Interfaces can contain only the signature of a method but no body. Thus an abstract class can implement methods but an interface can not implement methods.

    · An abstract class can contain fields, constructors, or destructors and implement properties. An interface can not contain fields, constructors, or destructors and it has only the property's signature but no implementation.

    · An abstract class cannot support multiple inheritance, but an interface can support multiple inheritance. Thus a class may inherit several interfaces but only one abstract class.

    · A class implementing an interface has to implement all the methods of the interface, but the same is not required in the case of an abstract Class.

    · Various access modifiers such as abstract, protected, internal, public, virtual, etc. are useful in abstract Classes but not in interfaces.

    · Abstract classes are faster than interfaces.

    interface just declaration.it provide standared for programming.it has no code.on the other hand abstaract class is one which can not make object.it is always inherited

    such that ie

    public abstarct class clscon

    {

    protected sqlconnection con= new sqlconnection()

    public clscon()

    {

    con.connectionstring= configurationmanager.connectionstring("cn").connectionstring;

    }
    }//this is abstract class

    interface

    public interface intemp

    {

    get;

    set;

    }

    interface just declaration.it provide standared for programming.it has no code.on the other hand abstaract class is one which can not make object.it is always inherited

    such that ie

    public abstarct class clscon

    {

    protected sqlconnection con= new sqlconnection()

    public clscon()

    {

    con.connectionstring= configurationmanager.connectionstring("cn").connectionstring;

    }
    }//this is abstract class

    interface

    public interface intemp

    {

    get;

    set;

    }

    There are basically three things to understand about interfaces and abstract classes: 1. Interfaces declare the methods a class must implement, but don't contain code. 2. Abstract classes may contain a mix of abstract and implemented methods. The abstract methods must be overridden in descendant classes.

    17y
    0

    • An interface cannot provide any code; just the signature means all methods must be abstract. But an abstract class can provide complete, default code and/or just the details but at least at least one method must be abstract.
    • A class may inherit several interfaces. But a class may inherit only one abstract class.
    • If the various implementations only share method signatures then it is better to use Interface. If the various implementations are of the same kind and use common behavior or status then abstract class is better to use.
    • If we add a new method to an Interface then we have to track down all the implementations of the interface and define implementation for the new method. But if we add a new method to an abstract class then we have the option of providing default implementation and therefore all the existing code might work properly.
    Thanks
    Gurjinder Singh Brar
    http://dotnet-question-answer.blogspot.com

    in interfaces we can only define methods. But we cant implemented those methods in interfaces itself. interfaces allow us to have multiple inheritance.

    in abstract classes we can define method and if we want we can implement those methods in abstact class. we cant instantiate from abstract classes.- by Shantha

    in interfaces we can only define methods. But we cant implemented those methods in interfaces itself. interfaces allow us to have multiple inheritance.

    in abstract classes we can define method and if we want we can implement those methods in abstact class. we cant instantiate from abstract classes.

    What is an Interface?

    An interface is a contract, a specification that concrete classes MUST follow. It defines method signatures but cannot have any implementations; the latter must be provided by the classes that implement the interface.

    C# differs from C++ in this regard because C++ lacks native language support for interfaces. As a C++ programmers you have to create an interface by defining an abstract class with pure virtual methods.

    what is an abstract class.................

    An Abstract class lets you define some behaviors and force your subclasses to provide others.
    For example, if you have an application framework, an abstract class may provide default services such as event and message handling. Those services allow your application to plug in to your application framework. However, there is some application-specific functionality that only your application can perform. So instead of trying to define these behaviors, the abstract class can declare abstract methods.

    Differences between Interfaces and Abstract classes Which we use ?

    I. multiple inheritance

    A class may implement several interfaces but can only extend one abstract class.

    II. default implementation

    An interface cannot provide any code at all, much less default code. An abstract class can provide complete code, default code, and/or just stubs that have to be overridden.

    III. adding functionality

    If you add a new method to an interface, you must track down all implementations of that interface in the universe and provide them with a concrete implementation of that method.
    If you add a new method to an abstract class, you have the option of providing a default implementation of it. Then all existing code will continue to work without change.

    IV. is-a vs -able or can-do

    Interfaces are often used to describe the abilities of a class, not its central identity, e.g. an Automobile class might implement the Recyclable interface, which could apply to many otherwise totally unrelated objects.

    An abstract class defines the core identity of its descendants.

    18y
    0

    when u want to go for inheritance in so many derived classes but the methods implementations are different for different derived classes then u will make the class as abstract or interface. When all the method's implementations are based on derived class u will go for interface and if few implementations are common and remaining depends on derived class u will go for abstract class where u can have defined as well as declared methods also. Note: abstract and interface classes are used when their methods are mandatory for derived classes and are not optional. They put restriction on derived classes that they cannot skip those methods withoud having them in it. bye -Ram Nath Nishad New Horizons India Ltd, N-101,Manipal Center, Bangalore, India

    18y
    0

    There are lost of discussion on the internet about the Interface vs Abstract class. Also, as base class whether we have to use interface, abstract class or normal class.

    I am trying to point out few considerations on which we can take decision about Interface vs Abstract class vs Class.

    Abstract Class vs Interface

    I am assuming you are having all the basic knowledge of abstract and interface keyword. I am just briefing the basics.

    We can not make instance of Abstract Class as well as Interface.

    Here are few differences in Abstract class and Interface as per the definition.

    Abstract class can contain abstract methods, abstract property as well as other members (just like normal class).

    Interface can only contain abstract methods, properties but we don’t need to put abstract and public keyword. All the methods and properties defined in Interface are by default public and abstract.


    //Abstarct Class

    public abstract class Vehicles
    {
            private int noOfWheel;
            private string color;
            public abstract string Engine
            {  
              get;
                 set;
            }
            public abstract void Accelerator();
    }

    //Interface
    public interface Vehicles
    {
    string Engine
             {  
                  get;
                  set;
    }
    void Accelerator();
    }

    We can see abstract class contains private members also we can put some methods with implementation also. But in case of interface only methods and properties allowed.

    We use abstract class and Interface for the base class in our application.

    This is all about the language definition. Now million dollar question.

    Thanks
    Manoj(InfoAxon Technology Limited)

    18y
    0

    In the interface all methods must be abstract, in the abstract class some methods can be concrete. In the interface no accessibility modifiers are allowed, which is ok in abstract classes.

    18y
    0