Bird
Raised Fist0
Kotlinprogramming~10 mins

Why open keyword is required for inheritance in Kotlin - Test Your Understanding

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to declare a class that can be inherited.

Kotlin
open class Animal {
    fun sound() {
        println("Animal sound")
    }
}

class Dog : [1]() {
}
Drag options to blanks, or click blank then click option'
Afun
Bopen
Cclass
DAnimal
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'open' instead of the class name after the colon.
Forgetting to specify the parent class name.
2fill in blank
medium

Complete the code to allow the function to be overridden in a subclass.

Kotlin
open class Vehicle {
    open fun drive() {
        println("Driving vehicle")
    }
}

class Car : Vehicle() {
    override fun [1]() {
        println("Driving car")
    }
}
Drag options to blanks, or click blank then click option'
AVehicle
Bopen
Cdrive
Doverride
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'open' or 'override' as the function name.
Changing the function name in the subclass.
3fill in blank
hard

Fix the error by adding the required keyword to allow inheritance.

Kotlin
class Person {
    fun greet() {
        println("Hello")
    }
}

class Student : [1]() {
}
Drag options to blanks, or click blank then click option'
APerson
Bopen Person
Copen
DPerson open
Attempts:
3 left
💡 Hint
Common Mistakes
Trying to inherit from a class not marked as open.
Adding 'open' in the wrong place.
4fill in blank
hard

Fill both blanks to create an open class and override its function.

Kotlin
class [1] {
    fun greet() {
        println("Hi")
    }
}

class Friend : [2]() {
    override fun greet() {
        println("Hello friend")
    }
}
Drag options to blanks, or click blank then click option'
Aopen Friend
BFriend
Copen Person
DPerson
Attempts:
3 left
💡 Hint
Common Mistakes
Not marking the base class as open.
Trying to override a function without the base function being open.
5fill in blank
hard

Fill all three blanks to define an open class, an open function, and override it in a subclass.

Kotlin
class [1] {
    [2] fun speak() {
        println("Speaking")
    }
}

class Teacher : [3]() {
    override fun speak() {
        println("Teaching")
    }
}
Drag options to blanks, or click blank then click option'
Aopen Person
Bopen
CPerson
DTeacher
Attempts:
3 left
💡 Hint
Common Mistakes
Not marking the function as open.
Not marking the base class as open.

Practice

(1/5)
1. Why is the open keyword required in Kotlin for inheritance?
easy
A. Because classes are final by default and cannot be inherited without open
B. Because open makes the class private
C. Because open automatically creates a constructor
D. Because open changes the class to an interface

Solution

  1. Step 1: Understand Kotlin class default behavior

    In Kotlin, classes are final by default, meaning they cannot be inherited unless explicitly allowed.
  2. Step 2: Role of the open keyword

    The open keyword marks a class as inheritable, allowing other classes to extend it.
  3. Final Answer:

    Because classes are final by default and cannot be inherited without open -> Option A
  4. Quick Check:

    Default final class = need open for inheritance [OK]
Hint: Remember: classes are final unless marked open [OK]
Common Mistakes:
  • Thinking open makes class private
  • Confusing open with interface keyword
  • Assuming inheritance works without open
2. Which of the following is the correct way to declare a class that can be inherited in Kotlin?
easy
A. open class MyClass {}
B. private class MyClass {}
C. final class MyClass {}
D. class MyClass {}

Solution

  1. Step 1: Check class declaration for inheritance

    To allow inheritance, the class must be marked with open.
  2. Step 2: Identify correct syntax

    Only open class MyClass {} allows other classes to inherit from it.
  3. Final Answer:

    open class MyClass {} -> Option A
  4. Quick Check:

    Use open keyword to allow inheritance [OK]
Hint: Look for open keyword to allow inheritance [OK]
Common Mistakes:
  • Omitting open keyword
  • Using final which forbids inheritance
  • Using private which restricts visibility
3. What will happen when you run this Kotlin code?
class Parent {}
class Child : Parent() {}
medium
A. Code runs successfully and Child inherits Parent
B. Runtime error due to missing constructor
C. Child class becomes abstract automatically
D. Compilation error because Parent is final by default

Solution

  1. Step 1: Analyze class inheritance without open

    Parent class is not marked open, so it is final by default and cannot be inherited.
  2. Step 2: Understand compilation behavior

    Trying to inherit from a final class causes a compilation error in Kotlin.
  3. Final Answer:

    Compilation error because Parent is final by default -> Option D
  4. Quick Check:

    Final class inheritance causes compile error [OK]
Hint: No open means no inheritance allowed [OK]
Common Mistakes:
  • Assuming inheritance works without open
  • Confusing runtime error with compile error
  • Thinking child class auto becomes abstract
4. Identify the error in this Kotlin code and fix it:
class Animal {}
class Dog : Animal() {}
medium
A. Remove parentheses from Dog inheritance
B. Add open keyword to Animal class
C. Make Dog class final
D. Change Animal to an interface

Solution

  1. Step 1: Identify inheritance error

    Animal class is final by default, so Dog cannot inherit from it without open.
  2. Step 2: Fix by adding open keyword

    Mark Animal as open class Animal {} to allow inheritance.
  3. Final Answer:

    Add open keyword to Animal class -> Option B
  4. Quick Check:

    Use open to fix inheritance error [OK]
Hint: Add open to parent class for inheritance [OK]
Common Mistakes:
  • Removing parentheses instead of adding open
  • Making child class final instead of parent open
  • Changing class to interface unnecessarily
5. You want to create a base class Vehicle that others can extend, but only allow extension within your module. How should you declare it in Kotlin?
hard
A. open class Vehicle {}
B. public open class Vehicle {}
C. internal open class Vehicle {}
D. final class Vehicle {}

Solution

  1. Step 1: Understand visibility and inheritance

    To allow inheritance only within the module, use internal visibility modifier.
  2. Step 2: Combine internal with open

    Mark class as internal open class Vehicle {} to allow inheritance inside the module but not outside.
  3. Final Answer:

    internal open class Vehicle {} -> Option C
  4. Quick Check:

    Use internal open for module-only inheritance [OK]
Hint: Use internal open for inheritance limited to module [OK]
Common Mistakes:
  • Using public open allows inheritance everywhere
  • Using final forbids inheritance
  • Omitting open keyword disables inheritance
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