Challenge - 5 Problems
Secondary Constructor Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediateOutput of secondary constructor call
What is the output of this Kotlin code using a secondary constructor?
Kotlin
class Person(val name: String) { var age: Int = 0 constructor(name: String, age: Int) : this(name) { this.age = age } fun info() = "$name is $age years old" } fun main() { val p = Person("Alice", 30) println(p.info()) }
Attempts:
2 left
💡 Hint
Remember that the secondary constructor calls the primary constructor first.
✗ Incorrect
The secondary constructor calls the primary constructor with 'this(name)', initializing 'name'. Then it sets 'age' to 30. So info() returns 'Alice is 30 years old'.
❓ Predict Output
intermediateValue of property after secondary constructor
What is the value of 'age' after creating an instance with the secondary constructor?
Kotlin
class Animal(val species: String) { var age: Int = 5 constructor(species: String, age: Int) : this(species) { this.age = age } } fun main() { val a = Animal("Dog", 7) println(a.age) }
Attempts:
2 left
💡 Hint
Check how the secondary constructor sets the 'age' property.
✗ Incorrect
The primary constructor sets age to 5, but the secondary constructor overrides it to 7.
🔧 Debug
advancedIdentify the error in secondary constructor usage
What error does this Kotlin code produce?
Kotlin
class Car(val brand: String) { var year: Int constructor(brand: String, year: Int) { this.brand = brand this.year = year } } fun main() { val c = Car("Toyota", 2020) println(c.brand + " " + c.year) }
Attempts:
2 left
💡 Hint
Check how the secondary constructor calls the primary constructor.
✗ Incorrect
In Kotlin, a secondary constructor must delegate to the primary constructor using 'this(...)'. This code does not, causing a compilation error.
📝 Syntax
advancedCorrect syntax for secondary constructor delegation
Which option shows the correct syntax for a secondary constructor delegating to the primary constructor?
Kotlin
class Book(val title: String) { var pages: Int = 0 // Secondary constructor here }
Attempts:
2 left
💡 Hint
Look for the correct delegation syntax using ': this(...)'.
✗ Incorrect
Option B correctly delegates to the primary constructor using ': this(title)'. Option B misses delegation, C uses invalid arrow syntax, D incorrectly uses 'super'.
🚀 Application
expertNumber of instances created with secondary constructor
Given this Kotlin code, how many times is the primary constructor called when creating an instance with the secondary constructor?
Kotlin
class User(val username: String) { init { println("Primary constructor called for $username") } constructor(username: String, email: String) : this(username) { println("Secondary constructor called for $username with email $email") } } fun main() { val u = User("john_doe", "john@example.com") }
Attempts:
2 left
💡 Hint
Remember how secondary constructors delegate to primary constructors in Kotlin.
✗ Incorrect
The secondary constructor delegates to the primary constructor exactly once before executing its own body.
