Bird
Raised Fist0
Kotlinprogramming~20 mins

Properties with val and var in Kotlin - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Kotlin Properties Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of val and var property modification
What is the output of this Kotlin code?
Kotlin
class Person {
    val name = "Alice"
    var age = 30
}

fun main() {
    val p = Person()
    // p.name = "Bob" // Uncommenting this line causes error
    p.age = 31
    println("Name: ${p.name}, Age: ${p.age}")
}
AName: Alice, Age: 31
BName: Bob, Age: 31
CName: Alice, Age: 30
DCompilation error due to val property modification
Attempts:
2 left
💡 Hint
Remember val means read-only property, var means mutable property.
❓ Predict Output
intermediate
2:00remaining
Property mutability in data classes
What will be the output of this Kotlin code?
Kotlin
data class Point(val x: Int, var y: Int)

fun main() {
    val p = Point(10, 20)
    // p.x = 15 // Uncommenting causes error
    p.y = 25
    println("x = ${p.x}, y = ${p.y}")
}
ACompilation error due to val property reassignment
Bx = 15, y = 25
Cx = 10, y = 25
Dx = 10, y = 20
Attempts:
2 left
💡 Hint
val properties cannot be reassigned, var properties can.
🔧 Debug
advanced
2:00remaining
Identify the error with val property reassignment
What error does this Kotlin code produce?
Kotlin
class Car {
    val model = "Sedan"
}

fun main() {
    val c = Car()
    c.model = "SUV"
    println(c.model)
}
ARuntime error: Uninitialized property access
BCompilation error: Val cannot be reassigned
CCompilation error: Variable 'c' must be mutable
DNo error, prints: SUV
Attempts:
2 left
💡 Hint
val properties cannot be reassigned after initialization.
🧠 Conceptual
advanced
2:00remaining
Difference between val and var in Kotlin properties
Which statement correctly describes the difference between val and var properties in Kotlin?
Aval properties are immutable and cannot be reassigned; var properties are mutable and can be reassigned.
Bval properties can be reassigned only inside the class; var properties cannot be reassigned.
Cval properties are mutable only if declared inside a data class; var properties are always immutable.
Dval and var properties behave the same; the difference is only in naming convention.
Attempts:
2 left
💡 Hint
Think about whether you can change the value after it is set.
❓ Predict Output
expert
3:00remaining
Output with val and var in inheritance
What is the output of this Kotlin code?
Kotlin
open class Animal {
    open val sound: String = ""
}

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

class Cat : Animal() {
    override var sound = "Meow"
}

fun main() {
    val dog = Dog()
    val cat = Cat()
    println("Dog sound: ${dog.sound}")
    println("Cat sound: ${cat.sound}")
    cat.sound = "Purr"
    println("Cat new sound: ${cat.sound}")
}
A
Dog sound: 
Cat sound: Meow
Cat new sound: Purr
B
Dog sound: Bark
Cat sound: Meow
Compilation error on cat.sound reassignment
C
Dog sound: Bark
Cat sound: Meow
Cat new sound: Purr
DCompilation error: Cannot override val with var
Attempts:
2 left
💡 Hint
val can be overridden by val, var can be overridden by var, but val cannot be overridden by var and vice versa.

Practice

(1/5)
1. What is the main difference between val and var properties in Kotlin?
easy
A. val can be changed anytime, var is read-only after initialization.
B. val is read-only after initialization, var can be changed anytime.
C. val and var both can be changed anytime.
D. val and var are exactly the same.

Solution

  1. Step 1: Understand val behavior

    val properties are assigned once and cannot be reassigned later.
  2. Step 2: Understand var behavior

    var properties can be reassigned multiple times after initialization.
  3. Final Answer:

    val is read-only after initialization, var can be changed anytime. -> Option B
  4. Quick Check:

    val = read-only, var = mutable [OK]
Hint: Remember: val = fixed, var = variable [OK]
Common Mistakes:
  • Confusing val as mutable
  • Thinking var is read-only
  • Believing val and var behave the same
2. Which of the following is the correct way to declare a mutable property named age of type Int in Kotlin?
easy
A. var age: Int = 25
B. val age: Int = 25
C. val age = 25
D. var age: Int

Solution

  1. Step 1: Identify mutable property keyword

    Mutable properties use var keyword.
  2. Step 2: Check initialization

    Property must be initialized or declared nullable; here age is initialized with 25.
  3. Final Answer:

    var age: Int = 25 -> Option A
  4. Quick Check:

    Mutable property uses var [OK]
Hint: Use var for changeable properties [OK]
Common Mistakes:
  • Using val for mutable property
  • Not initializing non-nullable property
  • Omitting type without initialization
3. What will be the output of the following Kotlin code?
class Person {
    val name = "Anna"
    var age = 30
}

fun main() {
    val p = Person()
    println(p.name)
    p.age = 31
    println(p.age)
}
medium
A. Anna 30
B. Anna null
C. Error: Cannot assign to val property
D. Anna 31

Solution

  1. Step 1: Check val name usage

    name is a val, so it prints "Anna" and cannot be changed.
  2. Step 2: Check var age reassignment

    age is a var, so it can be changed from 30 to 31 before printing.
  3. Final Answer:

    Anna 31 -> Option D
  4. Quick Check:

    val prints original, var prints updated [OK]
Hint: val prints original, var can be updated [OK]
Common Mistakes:
  • Expecting error on changing var
  • Thinking val can be reassigned
  • Confusing printed values
4. Identify the error in the following Kotlin code:
class Car {
    val model: String
    var year: Int

    init {
        model = "Tesla"
        year = 2020
    }
}

fun main() {
    val car = Car()
    car.model = "BMW"
    println(car.model)
}
medium
A. Cannot assign a new value to val property 'model'.
B. Property 'year' is not initialized.
C. Missing constructor parameters.
D. No error, code runs fine.

Solution

  1. Step 1: Check val model reassignment

    model is declared as val, so it cannot be reassigned after initialization.
  2. Step 2: Verify property initialization

    model and year are both initialized in init, so no initialization error.
  3. Final Answer:

    Cannot assign a new value to val property 'model'. -> Option A
  4. Quick Check:

    val properties cannot be reassigned [OK]
Hint: val properties cannot be changed after init [OK]
Common Mistakes:
  • Trying to reassign val property
  • Ignoring uninitialized var warnings
  • Assuming val can be reassigned
5. You want to create a Kotlin class Book where the title should never change after creation, but the price can be updated. Which declaration is correct?
hard
A. class Book(val title: String, val price: Double)
B. class Book(var title: String, var price: Double)
C. class Book(val title: String, var price: Double)
D. class Book(var title: String, val price: Double)

Solution

  1. Step 1: Determine immutability for title

    title should not change, so declare it with val.
  2. Step 2: Determine mutability for price

    price can change, so declare it with var.
  3. Final Answer:

    class Book(val title: String, var price: Double) -> Option C
  4. Quick Check:

    Immutable title = val, mutable price = var [OK]
Hint: Use val for fixed, var for changeable properties [OK]
Common Mistakes:
  • Using var for title which should be fixed
  • Using val for price which should be changeable
  • Mixing up val and var keywords
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