abstract
A class marked with the keyword abstract
cannot be instantiated.
A class must be marked as abstract if it contains abstract members or if it inherits abstract members that it doesn’t implement. A class may be marked as abstract even if no abstract members are involved.
Abstract classes are usually used as base classes when some part of the implementation needs to be specified by another component.
abstract class Animal { string Name { get; set; } public abstract void MakeSound(); } public class Cat : Animal { public override void MakeSound() { Console.WriteLine("Meov meow"); } } public class Dog : Animal { public override void MakeSound() { Console.WriteLine("Bark bark"); } } Animal cat = new Cat(); // Allowed due to Cat deriving from Animal cat.MakeSound(); // will print out "Meov meow" Animal dog = new Dog(); // Allowed due to Dog deriving from Animal dog.MakeSound(); // will print out "Bark bark" Animal animal = new Animal(); // Not allowed due to being an abstract class
A method, property, or event marked with the keyword abstract
indicates that the implementation for that member is expected to be provided in a subclass. As mentioned above, abstract members can only appear in abstract classes.
abstract class Animal { public abstract string Name { get; set; } } public class Cat : Animal { public override string Name { get; set; } } public class Dog : Animal { public override string Name { get; set; } }
abstract
Table Of Contents
2
Literals
18
Regex
19
DateTime
20
Arrays
22
Enum
23
Tuples
25
GUID
26
BigInteger
28
Looping
29
Iterators
30
IEnumerable
35
Dynamic type
37
Casting
41
Interfaces
47
Methods
52
Keywords
53
Recursion
57
Inheritance
58
Generics
62
Reflection
65
LINQ Queries
66
LINQ to XML
68
XmlDocument
69
XDocument
79
Diagnostics
80
Overflow
86
Properties
89
Events
93
Structs
94
Attributes
95
Delegates
97
Networking
102
Action Filters
103
Polymorphism
104
Immutability
105
Indexer
107
Stream
108
Timers
109
Stopwatches
110
Threading
112
Async Await
114
BackgroundWorker
117
Lock Statement
118
Yield Keyword
121
Func delegates
124
ICloneable
125
IComparable
127
Using SQLite
128
Caching
129
Code Contracts
136
Pointers
144
Hash Functions
146
Cryptography
148
C# Script
149
Runtime Compile
150
Interoperability
156
Contributors