What is the difference between interface, abstract, and ordinary class?
I'm still confused about the meaning of interface, and abstract classes, and don't know what is the difference between them and ordinary class, and in what situations we use interface or abstract classes.
I read many tutorials about this topic but still confused about their meaning and functionality, and i'd be glad if some one explain their meanings and function by examples.
Edit: actually i know what they are and what they do, but i want to know why should i use (abstract or interface) classes instead of just ordinary classes, although they can do the same job well.
Last edited by mrez0 : 01-25-2010 at 01:44 PM.
The Following User Says Thank You to mrez0 For This Useful Post:
Lets start with abstract classes since they are similar to interfaces but easier to understand. I am assuming that you understand inheritance here. Abstract classes are classes which can not be directly used in the program; they can only be inherited. Lets say that you have a game with a few classes "Players" "Objects" and "nonPlayerCharicters". All these classes may have some properties in common, all will have health points, call can be destroyed, and all will be drawn on the screen. What you can do is make a that supports drawing of a model, handling health and things like that. Then you make three classes that have all the dissimilar information that inherit the common class. The common class is quite useful when inherited, but by its self is useless. So a programmer to prevent future developers from wondering if it can be directly used will make it an abstract class. This tells (and forces) everyone that the class was designed to be supplemental.
Interface classes are almost exactly like abstract classes except you do not implement the functions there. This allows you to have variable and function names where the child class sets them. I've never found a use for this before, it is a pathetic attempt at a more complex concept called polymorphism.
The Following User Says Thank You to Village Idiot For This Useful Post:
So the use of abstract class is like providing some common characteristics to child classes, but these characteristics can't be used by instantiating objects to this abstract class, as it is not allowed to instantiate an object to abstract class.
[Like the object has no meaning if it was instantiated to an abstract class]