|
Hi all, can someone please clear things up for me regarding inheriting an abstract class. According to msdn.com[^] the following are some of the features of an abstract class:
It is not possible to modify an abstract class with the sealed modifier, which means that the class cannot be inherited.
A non-abstract class derived from an abstract class must include actual implementations of all inherited abstract methods and accessors.
The first sentence says that the class cannot be inherited but the second sentence says you can have a non-abstract class which is derived from an abstract class. If I'm not mistaken, a derived class is a class that inherits from another class. Thanks in advance for your response.
modified 10-Nov-12 17:16pm.
|
|
|
|
|
ASPnoob wrote: with the sealed modifier
You missed this in your understanding, sealed means, well sealed!
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
MSDN isn't always right and sometimes, like here, they don't update the documentation. If you follow the 'other versions' links, at the top of that page, to VS 2012, you'll see that the stuff about 'abstract sealed' has been changed.
It's possible that the person who wrote the docs was confusing C# and intermediate language (IL) classes. When a C# static class is compiled to IL, the class declaration is marked as abstract and sealed. So a C# static class is equivalent to an IL abstract sealed class.
In C# it's not actually possible to declare a class as 'abstract sealed'. Try it and you'll find that it won't compile.
Alan.
|
|
|
|
|
Thank you all for responding. I guess the confusion was over the fact that the author of the article was not being very clear.
|
|
|
|
|
I agree that this sentence could be clearer. What they're trying to say is:
- You cannot add the
sealed modifier to an abstract class; - The
sealed modifier means that a class cannot be inherited;
It looks like they cleared this up in the VS2010 version[^], where the sentence has been changed to:
It is not possible to modify an abstract class with the sealed (C# Reference) modifier because the two modifers have opposite meanings. The sealed modifier prevents a class from being inherited and the abstract modifier requires a class to be inherited.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|