Bird
Raised Fist0
Kotlinprogramming~10 mins

Enum with properties and methods in Kotlin - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Enum with properties and methods
Define Enum Class
↓
Add Properties to Enum
↓
Add Methods to Enum
↓
Create Enum Instances
↓
Access Properties and Call Methods
↓
Use Enum in Code
This flow shows how to define an enum with properties and methods, create instances, and use them.
Execution Sample
Kotlin
enum class Color(val rgb: Int) {
    RED(0xFF0000) {
        override fun printInfo() = println("Red color with RGB: $rgb")
    },
    GREEN(0x00FF00) {
        override fun printInfo() = println("Green color with RGB: $rgb")
    },
    BLUE(0x0000FF) {
        override fun printInfo() = println("Blue color with RGB: $rgb")
    };

    abstract fun printInfo()
}

fun main() {
    val c = Color.RED
    c.printInfo()
}
Defines an enum Color with a property rgb and a method printInfo, then calls printInfo on RED.
Execution Table
StepActionEnum InstanceProperty rgbMethod CalledOutput
1Enum Color is defined with RED, GREEN, BLUE----
2Main function starts----
3Assign c = Color.REDRED0xFF0000--
4Call c.printInfo()RED0xFF0000printInfo()Red color with RGB: 16711680
5Program ends----
💡 Program ends after calling printInfo on Color.RED
Variable Tracker
VariableStartAfter Step 3After Step 4Final
cnullColor.RED (rgb=16711680)Color.RED (rgb=16711680)Color.RED (rgb=16711680)
Key Moments - 2 Insights
Why do we need to override printInfo() for each enum instance?
Each enum instance can have its own behavior. Overriding printInfo() lets each color print a custom message, as shown in execution_table step 4.
What does the property rgb represent and how is it used?
rgb holds the color code as an integer. It is passed when creating each enum instance and used inside printInfo() to show the color value (see step 4).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of c.rgb after step 3?
A0xFF0000
B0x0000FF
C0x00FF00
Dnull
💡 Hint
Check the 'Property rgb' column at step 3 in the execution_table.
At which step is the method printInfo() called?
AStep 2
BStep 3
CStep 4
DStep 5
💡 Hint
Look at the 'Method Called' column in the execution_table.
If we add a new enum instance YELLOW with rgb 0xFFFF00, what changes in the execution_table?
AA new row for YELLOW creation and method call would appear
BNo changes, because YELLOW is not used in main
CThe output at step 4 changes to Yellow color
DThe program will not compile
💡 Hint
Check that main only uses Color.RED, so new enum instances don't affect existing steps.
Concept Snapshot
enum class Name(val property: Type) {
  INSTANCE1(value) {
    override fun method() { ... }
  },
  INSTANCE2(value) { ... };

  abstract fun method()
}

- Enums can have properties and methods.
- Each instance can override methods.
- Use enum instances like objects with behavior.
Full Transcript
This example shows how to define an enum class in Kotlin with properties and methods. The enum Color has a property rgb representing the color code. Each enum instance (RED, GREEN, BLUE) overrides the abstract method printInfo() to print a message including its rgb value. In main, we create a variable c assigned to Color.RED and call c.printInfo(), which outputs the message for RED. The execution table traces these steps, showing variable values and method calls. Key moments clarify why overriding methods per instance is useful and how properties are used. The quiz tests understanding of property values, method calls, and adding new enum instances. The snapshot summarizes the syntax and behavior of enums with properties and methods in Kotlin.

Practice

(1/5)
1. What is the main purpose of using an enum with properties and methods in Kotlin?
easy
A. To group related fixed values with additional data and behavior
B. To create a list of unrelated variables
C. To define functions without any fixed values
D. To replace all classes in Kotlin

Solution

  1. Step 1: Understand enum basics

    Enums group fixed related values, like days or colors.
  2. Step 2: Recognize added properties and methods

    Adding properties and methods lets each enum value hold extra data and behavior.
  3. Final Answer:

    To group related fixed values with additional data and behavior -> Option A
  4. Quick Check:

    Enums = fixed values + extra data [OK]
Hint: Enums bundle fixed options with data and actions [OK]
Common Mistakes:
  • Thinking enums are for unrelated variables
  • Confusing enums with regular classes
  • Assuming enums can't have methods
2. Which of the following is the correct syntax to declare an enum with a property color of type String in Kotlin?
easy
A. enum class Fruit { APPLE(color = "Red"), BANANA(color = "Yellow") }
B. enum Fruit { APPLE: String = "Red", BANANA: String = "Yellow" }
C. enum class Fruit(val color: String) { APPLE("Red"), BANANA("Yellow") }
D. enum class Fruit { val color: String = "Red"; APPLE, BANANA }

Solution

  1. Step 1: Check enum class declaration with property

    In Kotlin, enum classes can have constructor parameters like val color: String.
  2. Step 2: Verify enum values initialization

    Each enum value must pass the property value in parentheses, e.g., APPLE("Red").
  3. Final Answer:

    enum class Fruit(val color: String) { APPLE("Red"), BANANA("Yellow") } -> Option C
  4. Quick Check:

    Enum with constructor and values = enum class Fruit(val color: String) { APPLE("Red"), BANANA("Yellow") } [OK]
Hint: Use constructor parameters and pass values in parentheses [OK]
Common Mistakes:
  • Using colon syntax instead of constructor parameters
  • Trying to assign properties inside enum body incorrectly
  • Omitting parentheses for enum values
3. What will be the output of the following Kotlin code?
enum class Size(val label: String) {
    SMALL("S"), MEDIUM("M"), LARGE("L");
    fun description() = "Size is $label"
}

fun main() {
    println(Size.MEDIUM.description())
}
medium
A. Size is M
B. Size is MEDIUM
C. MEDIUM
D. Size.MEDIUM

Solution

  1. Step 1: Understand enum property and method

    Each enum value has a label property: MEDIUM has "M".
  2. Step 2: Evaluate the description() method call

    The method returns "Size is $label", so for MEDIUM it returns "Size is M".
  3. Final Answer:

    Size is M -> Option A
  4. Quick Check:

    Method uses label property = "Size is M" [OK]
Hint: Method uses property value, not enum name [OK]
Common Mistakes:
  • Printing enum name instead of property
  • Confusing property label with enum constant name
  • Ignoring method call output
4. Identify the error in this Kotlin enum declaration:
enum class Direction(val degrees: Int) {
    NORTH(0),
    EAST(90),
    SOUTH(180),
    WEST
}
medium
A. Semicolon missing after enum constants
B. Cannot have properties in enum classes
C. Enum constants must be lowercase
D. Missing property value for WEST enum constant

Solution

  1. Step 1: Check enum constructor parameters

    The enum class requires an Int parameter degrees for each constant.
  2. Step 2: Verify each enum constant initialization

    All constants except WEST provide a value; WEST is missing (value).
  3. Final Answer:

    Missing property value for WEST enum constant -> Option D
  4. Quick Check:

    All enum constants must pass constructor values [OK]
Hint: All enum constants must provide constructor arguments [OK]
Common Mistakes:
  • Forgetting to pass constructor arguments for all constants
  • Assuming semicolon is mandatory after constants
  • Thinking enum constants must be lowercase
5. Given this enum with a method:
enum class TrafficLight(val duration: Int) {
    RED(30) {
        override fun signal() = "Stop"
    },
    YELLOW(5) {
        override fun signal() = "Caution"
    },
    GREEN(25) {
        override fun signal() = "Go"
    };
    abstract fun signal(): String
}

fun main() {
    val lights = TrafficLight.values()
    val signals = lights.map { it.signal() }
    println(signals)
}

What is the output when running main()?
hard
A. [30, 5, 25]
B. ["Stop", "Caution", "Go"]
C. [RED, YELLOW, GREEN]
D. ["Go", "Caution", "Stop"]

Solution

  1. Step 1: Understand enum with abstract method

    Each enum constant overrides signal() to return a specific string.
  2. Step 2: Map enum values to their signals

    The map calls signal() on each constant, producing ["Stop", "Caution", "Go"].
  3. Final Answer:

    ["Stop", "Caution", "Go"] -> Option B
  4. Quick Check:

    Abstract method overridden per constant = correct signals [OK]
Hint: Abstract method overridden per enum constant returns correct string [OK]
Common Mistakes:
  • Printing enum names instead of method results
  • Confusing property values with method outputs
  • Ignoring abstract method override requirement
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