Bird
Raised Fist0
Kotlinprogramming~20 mins

Abstract classes and methods in Kotlin - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
πŸŽ–οΈ
Abstract Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of abstract class method call

What is the output of this Kotlin code?

Kotlin
abstract class Animal {
    abstract fun sound(): String
}

class Dog : Animal() {
    override fun sound() = "Bark"
}

fun main() {
    val dog: Animal = Dog()
    println(dog.sound())
}
ABark
BSound
CCompilation error
DRuntime error
Attempts:
2 left
πŸ’‘ Hint

Remember that abstract methods must be overridden in subclasses.

🧠 Conceptual
intermediate
1:30remaining
Abstract class instantiation

Which statement about abstract classes in Kotlin is true?

AAll methods in an abstract class must be abstract.
BAbstract classes cannot have constructors.
CAbstract classes can have both abstract and non-abstract methods.
DYou can create an instance of an abstract class directly.
Attempts:
2 left
πŸ’‘ Hint

Think about what abstract classes are used for and their flexibility.

πŸ”§ Debug
advanced
2:30remaining
Identify the error in abstract method override

What error will this Kotlin code produce?

Kotlin
abstract class Vehicle {
    abstract fun move(): String
}

class Car : Vehicle() {
    fun move(): String {
        return "Driving"
    }
}

fun main() {
    val car = Car()
    println(car.move())
}
ACompilation error: 'move' in 'Car' hides abstract member in 'Vehicle' and must be marked override
BRuntime error: Abstract method not implemented
CNo error, output: Driving
DCompilation error: Cannot instantiate abstract class
Attempts:
2 left
πŸ’‘ Hint

Check if the method in subclass properly overrides the abstract method.

πŸ“ Syntax
advanced
2:00remaining
Correct syntax for abstract class with constructor

Which option shows the correct way to declare an abstract class with a primary constructor in Kotlin?

A
abstract class Shape {
    constructor(name: String)
    abstract fun area(): Double
}
B
abstract class Shape(val name: String) {
    abstract fun area(): Double
}
C
abstract class Shape() {
    val name: String
    abstract fun area(): Double
}
D
abstract class Shape {
    val name: String
    abstract fun area(): Double
    constructor(name: String) { this.name = name }
}
Attempts:
2 left
πŸ’‘ Hint

Remember how primary constructors are declared in Kotlin classes.

πŸš€ Application
expert
3:00remaining
Determine the output of complex abstract class hierarchy

What is the output of this Kotlin program?

Kotlin
abstract class A {
    abstract fun f(): String
    fun g() = "G from A"
}

abstract class B : A() {
    override fun f() = "F from B"
    abstract fun h(): String
}

class C : B() {
    override fun h() = "H from C"
}

fun main() {
    val c = C()
    println(c.f())
    println(c.g())
    println(c.h())
}
ARuntime error: Abstract method h() not implemented
B
F from B
G from B
H from C
CCompilation error: Class C must override abstract method g()
D
F from B
G from A
H from C
Attempts:
2 left
πŸ’‘ Hint

Trace the inheritance and method overrides carefully.

Practice

(1/5)
1. What is true about an abstract class in Kotlin?
easy
A. It cannot be instantiated directly and may contain abstract methods.
B. It can be instantiated like any other class.
C. It must not contain any methods with a body.
D. It is the same as an interface.

Solution

  1. Step 1: Understand abstract class instantiation rules

    Abstract classes cannot create objects directly because they are incomplete by design.
  2. Step 2: Check method types in abstract classes

    Abstract classes can have both abstract methods (without body) and concrete methods (with body).
  3. Final Answer:

    It cannot be instantiated directly and may contain abstract methods. -> Option A
  4. Quick Check:

    Abstract class = no direct objects + can have abstract methods [OK]
Hint: Abstract classes can't create objects directly [OK]
Common Mistakes:
  • Thinking abstract classes can be instantiated
  • Believing abstract classes can't have method bodies
  • Confusing abstract classes with interfaces
2. Which of the following is the correct way to declare an abstract method in a Kotlin abstract class?
easy
A. abstract fun calculate(): Int
B. fun abstract calculate(): Int
C. fun calculate() abstract: Int
D. abstract calculate fun(): Int

Solution

  1. Step 1: Recall Kotlin syntax for abstract methods

    In Kotlin, abstract methods are declared with the abstract keyword before fun, followed by the method signature without a body.
  2. Step 2: Check each option's syntax

    Only abstract fun calculate(): Int matches the correct syntax: abstract fun calculate(): Int. Others have incorrect keyword order or punctuation.
  3. Final Answer:

    abstract fun calculate(): Int -> Option A
  4. Quick Check:

    abstract fun method() = correct syntax [OK]
Hint: abstract keyword comes before fun in method declaration [OK]
Common Mistakes:
  • Placing abstract after fun
  • Adding a method body to abstract methods
  • Incorrect keyword order
3. What will be the output of this Kotlin code?
abstract class Animal {
    abstract fun sound(): String
}

class Dog : Animal() {
    override fun sound() = "Bark"
}

fun main() {
    val dog = Dog()
    println(dog.sound())
}
medium
A. Animal
B. sound
C. Bark
D. Compilation error

Solution

  1. Step 1: Understand class inheritance and method override

    The abstract class Animal has an abstract method sound(). The subclass Dog overrides it to return "Bark".
  2. Step 2: Analyze main function output

    Creating a Dog object and calling sound() prints "Bark".
  3. Final Answer:

    Bark -> Option C
  4. Quick Check:

    Overridden method returns "Bark" [OK]
Hint: Overridden abstract method returns subclass value [OK]
Common Mistakes:
  • Expecting abstract class method to run
  • Confusing method name with output
  • Thinking abstract class can be instantiated
4. Identify the error in this Kotlin code:
abstract class Vehicle {
    abstract fun drive()
}

class Car : Vehicle() {
    fun drive() {
        println("Driving")
    }
}
medium
A. drive method in Vehicle should have a body
B. Vehicle class cannot be abstract
C. Car class cannot inherit from Vehicle
D. Missing override keyword in Car's drive method

Solution

  1. Step 1: Check method overriding rules in Kotlin

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

    The Car class defines drive() without override, causing a compilation error.
  3. Final Answer:

    Missing override keyword in Car's drive method -> Option D
  4. Quick Check:

    Override keyword required for abstract method implementation [OK]
Hint: Use override keyword when implementing abstract methods [OK]
Common Mistakes:
  • Omitting override keyword
  • Adding body to abstract method in base class
  • Misunderstanding inheritance rules
5. Given this abstract class and subclass, what will be the output?
abstract class Shape {
    abstract fun area(): Double
    fun description() = "Shape area is ${area()}"
}

class Circle(val radius: Double) : Shape() {
    override fun area() = 3.14 * radius * radius
}

fun main() {
    val c = Circle(2.0)
    println(c.description())
}
hard
A. Shape area is 6.28
B. Shape area is 12.56
C. Shape area is 4.0
D. Compilation error due to abstract method

Solution

  1. Step 1: Calculate area in Circle subclass

    Area = Ο€ * radiusΒ² = 3.14 * 2.0 * 2.0 = 12.56
  2. Step 2: Call description method from Shape

    Description returns string with area value: "Shape area is 12.56".
  3. Final Answer:

    Shape area is 12.56 -> Option B
  4. Quick Check:

    Abstract method overridden, description uses area() [OK]
Hint: description calls overridden area() method [OK]
Common Mistakes:
  • Forgetting to override abstract method
  • Miscomputing area formula
  • Expecting abstract class method to run alone
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