Following are my observations with Abstract classes in .NET.
Feel free to write in comments if you think of more points to be added in this list, or if you want know more details about one or more points :)
- A class must be declared with "abstract" keyword
- It can contain complete implantation of methods
- Methods declared with "abstract" keyword can contain only declarations in Abstract class
- We cannot create an instance of abstract class
- Abstract class must be inherited
- A class derived from an abstract class must contain complete implementation of all abstract methods
- An abstract class can be derived from another abstract class
- Abstract class can be used as a parameter in methods
- If a class contains an abstract method, then that class must be marked as "abstract"
- An abstract class can have a constructor
- An abstract class can be inherited from a non-abstract class
- Constructor rules are also applied in case of abstract classes inheritance
P.S. - Please note all keyword and code snippets (if demonstrated above) are in C#.NET