Bird
Raised Fist0
Kotlinprogramming~30 mins

Enum with properties and methods in Kotlin - Mini Project: Build & Apply

Choose your learning style10 modes available
Enum with properties and methods
📖 Scenario: Imagine you are creating a simple app that shows different types of coffee sizes with their prices and descriptions.
🎯 Goal: You will create an enum class in Kotlin that has properties and a method to describe each coffee size.
📋 What You'll Learn
Create an enum class called CoffeeSize with three entries: SMALL, MEDIUM, and LARGE
Each enum entry should have two properties: price (Double) and description (String)
Add a method called displayInfo() inside the enum that returns a string combining the size name, price, and description
Print the result of calling displayInfo() on each enum entry
💡 Why This Matters
🌍 Real World
Enums with properties and methods are useful to represent fixed sets of related data with extra details, like product sizes, statuses, or categories.
💼 Career
Understanding enums with properties and methods helps in writing clean, organized code in Kotlin, which is valuable for Android development and backend services.
Progress0 / 4 steps
1
Create the enum class with entries and properties
Create an enum class called CoffeeSize with three entries: SMALL, MEDIUM, and LARGE. Each entry should have two properties: price of type Double and description of type String. Use the exact values: SMALL(2.5, "Small cup"), MEDIUM(3.5, "Medium cup"), LARGE(4.5, "Large cup").
Kotlin
Hint

Remember to declare the properties inside the parentheses after the enum name and separate entries with commas.

2
Add a method to display info
Inside the CoffeeSize enum class, add a method called displayInfo() that returns a String. This method should return a string in the format: "Size: [name], Price: $[price], Description: [description]". Use the enum's name property for the size name.
Kotlin
Hint

Use the name property of the enum to get the size name. Use string templates with $ to insert values.

3
Call the method for each enum entry
Write a main function. Inside it, use a for loop with variable size to iterate over CoffeeSize.values(). For each size, call displayInfo() and store the results in a list called infoList.
Kotlin
Hint

Use CoffeeSize.values() to get all enum entries. Add each displayInfo() result to infoList.

4
Print the info list
In the main function, after the loop, print each string in infoList on its own line using a for loop with variable info.
Kotlin
Hint

Use println(info) inside the loop to print each string on its own line.

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