Bird
Raised Fist0
C Sharp (C#)programming~5 mins

Abstract classes and methods in C Sharp (C#) - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is an abstract class in C#?
An abstract class is a class that cannot be instantiated directly. It is designed to be a base class for other classes and can contain abstract methods that must be implemented by derived classes.
Click to reveal answer
beginner
What is an abstract method?
An abstract method is a method declared in an abstract class without an implementation. Derived classes must provide their own implementation of this method.
Click to reveal answer
beginner
Can you create an object of an abstract class?
No, you cannot create an object of an abstract class directly. You must create an object of a derived class that implements all abstract methods.
Click to reveal answer
intermediate
Why use abstract classes and methods?
They help define a common template for related classes, ensuring that certain methods are implemented in all derived classes, promoting code consistency and reuse.
Click to reveal answer
beginner
Show a simple example of an abstract class with an abstract method in C#.
abstract class Animal {
    public abstract void MakeSound();
}

class Dog : Animal {
    public override void MakeSound() {
        System.Console.WriteLine("Woof!");
    }
}
Click to reveal answer
Which keyword is used to declare an abstract class in C#?
Aabstract
Bvirtual
Coverride
Dsealed
Can an abstract method have a body (implementation) in C#?
AOnly if the class is sealed
BYes, always
CNo, never
DOnly if marked virtual
What must a derived class do with an abstract method?
AOverride and implement it
BIgnore it
CDelete it
DCall base method
Can you instantiate an abstract class directly?
AYes
BOnly with new keyword
COnly if it has no abstract methods
DNo
Which of these is true about abstract classes?
AThey cannot inherit from other classes
BThey can contain both abstract and non-abstract methods
CThey cannot have constructors
DThey can only contain abstract methods
Explain what an abstract class and an abstract method are, and why they are useful.
Think about how you create a blueprint for other classes.
You got /4 concepts.
    Write a simple C# example showing an abstract class with one abstract method and a derived class implementing that method.
    Use Animal and Dog as example classes.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is true about an abstract class in C#?
      easy
      A. It can be instantiated like any other class.
      B. It must have only abstract methods.
      C. It cannot be instantiated directly.
      D. It cannot have any methods.

      Solution

      1. Step 1: Understand abstract class instantiation rules

        An abstract class is designed as a base template and cannot be created as an object directly.
      2. Step 2: Check other options for correctness

        Abstract classes can have both abstract and non-abstract methods, so options A, B, and D are incorrect.
      3. Final Answer:

        It cannot be instantiated directly. -> Option C
      4. Quick Check:

        Abstract class = no direct instantiation [OK]
      Hint: Remember: abstract classes are blueprints, not objects. [OK]
      Common Mistakes:
      • Thinking abstract classes can be instantiated.
      • Believing abstract classes must have only abstract methods.
      • Confusing abstract classes with interfaces.
      2. Which of the following is the correct way to declare an abstract method in C#?
      easy
      A. public abstract void Display() {}
      B. public abstract void Display();
      C. abstract public void Display() {}
      D. public void abstract Display() {}

      Solution

      1. Step 1: Recall abstract method syntax

        Abstract methods have no body and end with a semicolon, declared with the 'abstract' keyword before the return type.
      2. Step 2: Validate each option

        public abstract void Display(); matches the correct syntax. public void abstract Display() {} and C have wrong keyword order or include a body. public abstract void Display() {} incorrectly includes a method body.
      3. Final Answer:

        public abstract void Display(); -> Option B
      4. Quick Check:

        Abstract method = declaration only, no body [OK]
      Hint: Abstract methods end with semicolon, no braces. [OK]
      Common Mistakes:
      • Adding method body to abstract methods.
      • Wrong keyword order in declaration.
      • Using braces {} with abstract methods.
      3. What will be the output of the following code?
      abstract class Animal {
          public abstract string Speak();
      }
      
      class Dog : Animal {
          public override string Speak() {
              return "Woof";
          }
      }
      
      class Program {
          static void Main() {
              Animal myDog = new Dog();
              System.Console.WriteLine(myDog.Speak());
          }
      }
      medium
      A. Woof
      B. Animal
      C. Compile-time error
      D. Runtime error

      Solution

      1. Step 1: Understand class inheritance and method override

        Dog inherits from abstract Animal and implements the abstract Speak method returning "Woof".
      2. Step 2: Trace program execution

        Main creates a Dog object as Animal type and calls Speak(), which runs Dog's override returning "Woof".
      3. Final Answer:

        Woof -> Option A
      4. Quick Check:

        Override abstract method = Dog's Speak() output [OK]
      Hint: Abstract method calls run subclass override. [OK]
      Common Mistakes:
      • Expecting abstract class method output.
      • Thinking abstract classes can be instantiated.
      • Confusing compile-time and runtime errors.
      4. Identify the error in this code snippet:
      abstract class Shape {
          public abstract double Area();
      }
      
      class Circle : Shape {
          public double Area() {
              return 3.14 * 5 * 5;
          }
      }
      medium
      A. Circle class cannot inherit from Shape.
      B. Area() method cannot return double.
      C. Shape class cannot have abstract methods.
      D. Circle must declare Area() as override.

      Solution

      1. Step 1: Check method overriding rules

        When a subclass implements an abstract method, it must use the 'override' keyword.
      2. Step 2: Identify missing override keyword

        Circle's Area() method lacks 'override', causing a compile error.
      3. Final Answer:

        Circle must declare Area() as override. -> Option D
      4. Quick Check:

        Override abstract method = must use 'override' keyword [OK]
      Hint: Override abstract methods with 'override' keyword. [OK]
      Common Mistakes:
      • Omitting 'override' keyword in subclass method.
      • Thinking abstract methods can be implemented without override.
      • Confusing return types.
      5. You want to create a base class Vehicle with an abstract method StartEngine(). You also want to ensure every subclass implements StartEngine() differently. Which is the best approach?
      hard
      A. Make Vehicle an abstract class with an abstract StartEngine() method.
      B. Make Vehicle a normal class and provide a default StartEngine() implementation.
      C. Make Vehicle an interface with StartEngine() method.
      D. Make Vehicle a sealed class with StartEngine() method.

      Solution

      1. Step 1: Understand requirement for different implementations

        Each subclass must implement StartEngine() differently, so a base method without body is needed.
      2. Step 2: Choose correct class type and method declaration

        Abstract class Vehicle with abstract StartEngine() enforces subclasses to implement it uniquely.
      3. Final Answer:

        Make Vehicle an abstract class with an abstract StartEngine() method. -> Option A
      4. Quick Check:

        Abstract class + abstract method = enforced subclass implementation [OK]
      Hint: Use abstract class + abstract method for enforced overrides. [OK]
      Common Mistakes:
      • Using sealed class which prevents inheritance.
      • Using interface when base class behavior is needed.
      • Providing default method when unique implementations required.