codementor on Nostr: Learn: Abstract class An abstract class is a base class you can't create directly. It ...
Learn: Abstract class
An abstract class is a base class you can't create directly. It can hold shared code and fields, plus abstract members each subclass must fill in.
A class can inherit from only one class.
Use it when: related classes share real code, not just a contract.
```csharp
Animal[] animals = { new Dog(), new Cat() };
foreach (var a in animals) Console.WriteLine(a.Describe());
abstract class Animal
{
public string Describe() => $"{GetType().Name} says {Sound()}"; // shared code
protected abstract string Sound(); // each subclass fills in
}
class Dog : Animal { protected override string Sound() => "woof"; }
class Cat : Animal { protected override string Sound() => "meow"; }
```
It prints Dog says woof, then Cat says meow.
Read more:
https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/abstract#tip · TIP-049
Published at
2026-10-25 10:05:57 UTCEvent JSON
{
"id": "075ea5280e5babbb9e5f872c2b43cc7e0664461192f6614596ba9e9d447b74e3",
"pubkey": "e68a0856e90d9997b1f721e905249896412dd570399a987b2e8fd5e7fcfe2279",
"created_at": 1792922757,
"kind": 1,
"tags": [
[
"t",
"tip"
]
],
"content": "Learn: Abstract class\n\nAn abstract class is a base class you can't create directly. It can hold shared code and fields, plus abstract members each subclass must fill in.\nA class can inherit from only one class.\nUse it when: related classes share real code, not just a contract.\n\n```csharp\nAnimal[] animals = { new Dog(), new Cat() };\nforeach (var a in animals) Console.WriteLine(a.Describe());\n\nabstract class Animal\n{\n public string Describe() =\u003e $\"{GetType().Name} says {Sound()}\"; // shared code\n protected abstract string Sound(); // each subclass fills in\n}\nclass Dog : Animal { protected override string Sound() =\u003e \"woof\"; }\nclass Cat : Animal { protected override string Sound() =\u003e \"meow\"; }\n```\n\nIt prints Dog says woof, then Cat says meow.\n\nRead more: https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/abstract\n\n#tip · TIP-049",
"sig": "470a55f9da76e994dd3aad64674dbf954710b6030f8a8dfafd579d2db276fdbeea1bf55bd8505a64688f6cc5b3aa08d70160db652352555d2470550bf4ef261d"
}