Challenge - 5 Problems
Secondary Constructor Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
Output 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
intermediate2:00remaining
Value 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
advanced2:00remaining
Identify 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
advanced2:00remaining
Correct 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
expert2:00remaining
Number 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.