Bird
Raised Fist0
Kotlinprogramming~5 mins

Open classes and methods in Kotlin - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the open keyword mean in Kotlin?
In Kotlin, <code>open</code> means a class or method can be inherited or overridden. By default, classes and methods are <code>final</code> and cannot be changed.
Click to reveal answer
beginner
Why are classes and methods final by default in Kotlin?
Kotlin makes classes and methods final by default to avoid accidental inheritance or overriding, which helps keep code safer and easier to understand.
Click to reveal answer
beginner
How do you make a class inheritable in Kotlin?
Add the <code>open</code> keyword before the class name. For example: <code>open class Animal</code> allows other classes to inherit from <code>Animal</code>.
Click to reveal answer
beginner
How do you allow a method to be overridden in Kotlin?
Mark the method with open. For example: open fun speak() {} lets subclasses provide their own version of speak().
Click to reveal answer
beginner
What happens if you try to override a method that is not marked open?
Kotlin will give a compile error because only open methods can be overridden. This prevents accidental changes to important behavior.
Click to reveal answer
In Kotlin, what keyword do you use to allow a class to be inherited?
Aopen
Bfinal
Coverride
Dabstract
What is the default behavior of classes in Kotlin regarding inheritance?
AThey are abstract
BThey are open for inheritance
CThey are final and cannot be inherited
DThey are interfaces
Which keyword allows a method to be overridden in Kotlin?
Aabstract
Boverride
Cfinal
Dopen
What happens if you try to override a method not marked as open?
AIt works normally
BYou get a compile-time error
CThe method becomes abstract
DThe method is ignored
Which of these is true about open classes and methods?
AThey can be inherited or overridden
BThey cannot be inherited or overridden
CThey are abstract by default
DThey are deprecated
Explain what the open keyword does in Kotlin and why it is important.
Think about how Kotlin protects your code by default and how <code>open</code> changes that.
You got /4 concepts.
    Describe the difference between a class marked open and one that is not in Kotlin.
    Focus on inheritance and overriding permissions.
    You got /4 concepts.

      Practice

      (1/5)
      1. In Kotlin, what does the open keyword do when applied to a class or method?
      easy
      A. Prevents the class or method from being used
      B. Makes the class or method private
      C. Allows the class or method to be inherited or overridden
      D. Automatically overrides the method in subclasses

      Solution

      1. Step 1: Understand Kotlin class and method defaults

        By default, Kotlin classes and methods are final, meaning they cannot be inherited or overridden.
      2. Step 2: Role of the open keyword

        The open keyword explicitly allows a class to be inherited or a method to be overridden in subclasses.
      3. Final Answer:

        Allows the class or method to be inherited or overridden -> Option C
      4. Quick Check:

        open means inheritance allowed [OK]
      Hint: Remember: open means 'can be changed' [OK]
      Common Mistakes:
      • Thinking classes are open by default
      • Confusing open with override
      • Assuming open makes methods private
      2. Which of the following is the correct way to declare an open method named display in Kotlin?
      easy
      A. open fun display() { }
      B. fun display() open { }
      C. fun open display() { }
      D. open display fun() { }

      Solution

      1. Step 1: Recall Kotlin method declaration syntax

        In Kotlin, the keyword fun starts the function declaration, followed by the function name and parentheses.
      2. Step 2: Position of open keyword

        The open keyword must come before fun to mark the method as open for overriding.
      3. Final Answer:

        open fun display() { } -> Option A
      4. Quick Check:

        open fun is correct order [OK]
      Hint: Put open before fun for methods [OK]
      Common Mistakes:
      • Placing open after fun
      • Putting open after method name
      • Using open without fun keyword
      3. What will be the output of the following Kotlin code?
      open class Animal {
          open fun sound() = "Some sound"
      }
      
      class Dog : Animal() {
          override fun sound() = "Bark"
      }
      
      fun main() {
          val pet: Animal = Dog()
          println(pet.sound())
      }
      medium
      A. Some sound
      B. Bark
      C. Compilation error
      D. Runtime error

      Solution

      1. Step 1: Understand class inheritance and method overriding

        The class Dog inherits from Animal and overrides the sound() method to return "Bark".
      2. Step 2: Polymorphism in action

        Even though pet is typed as Animal, it holds a Dog instance, so the overridden sound() method in Dog is called.
      3. Final Answer:

        Bark -> Option B
      4. Quick Check:

        Overridden method runs on subclass instance [OK]
      Hint: Overridden methods run on actual object type [OK]
      Common Mistakes:
      • Expecting base class method output
      • Confusing compile-time and run-time types
      • Forgetting to mark methods open
      4. Identify the error in the following Kotlin code:
      class Vehicle {
          open fun start() = "Starting"
      }
      
      class Car : Vehicle() {
          fun start() = "Car starting"
      }
      medium
      A. Method start() in Car must be marked override
      B. No error, code is correct
      C. Car class cannot inherit from Vehicle
      D. Vehicle class must be open to allow inheritance

      Solution

      1. Step 1: Check if Vehicle class allows inheritance

        By default, Kotlin classes are final. Since Vehicle is not marked open, it cannot be inherited.
      2. Step 2: Analyze the inheritance attempt

        Car tries to inherit from Vehicle, which causes a compilation error because Vehicle is not open.
      3. Final Answer:

        Vehicle class must be open to allow inheritance -> Option D
      4. Quick Check:

        Classes must be open to inherit [OK]
      Hint: Mark classes open to inherit them [OK]
      Common Mistakes:
      • Forgetting to mark base class open
      • Assuming methods override without keyword
      • Ignoring Kotlin's default final classes
      5. You want to create a Kotlin class Shape with an open method area() that returns 0.0 by default. Then create a subclass Circle that overrides area() to return the circle's area using its radius. Which code correctly implements this?
      hard
      A. open class Shape { open fun area() = 0.0 } class Circle(val radius: Double) : Shape() { override fun area() = 3.14 * radius * radius }
      B. class Shape { fun area() = 0.0 } class Circle(val radius: Double) : Shape() { fun area() = 3.14 * radius * radius }
      C. open class Shape { fun area() = 0.0 } class Circle(val radius: Double) : Shape() { override fun area() = 3.14 * radius * radius }
      D. class Shape { open fun area() = 0.0 } class Circle(val radius: Double) : Shape() { override fun area() = 3.14 * radius * radius }

      Solution

      1. Step 1: Mark base class and method open

        To allow inheritance and overriding, Shape must be open and its area() method must also be open.
      2. Step 2: Override method correctly in subclass

        Circle inherits from Shape and overrides area() using override keyword, calculating area using radius.
      3. Final Answer:

        Option A code correctly implements open class and method with override -> Option A
      4. Quick Check:

        Open base and override subclass method [OK]
      Hint: Open base class and method, override in subclass [OK]
      Common Mistakes:
      • Not marking class or method open
      • Missing override keyword in subclass
      • Trying to override non-open method
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard