Bird
Raised Fist0
Kotlinprogramming~10 mins

Object declaration syntax in Kotlin - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Object declaration syntax
Start
↓
Declare object with 'object' keyword
↓
Define properties and methods inside
↓
Use object directly without instantiation
↓
Access properties/methods
↓
End
This flow shows how Kotlin's object declaration creates a singleton object with properties and methods that can be used directly.
Execution Sample
Kotlin
object Logger {
    val prefix = "Log:"
    fun printMessage(msg: String) {
        println("$prefix $msg")
    }
}

Logger.printMessage("Hello")
Defines a singleton object Logger with a property and a method, then calls the method to print a message.
Execution Table
StepActionEvaluationResult
1Declare object LoggerCreate singleton instanceLogger object created with prefix and printMessage
2Access Logger.prefixRetrieve value"Log:"
3Call Logger.printMessage("Hello")Execute functionPrints: Log: Hello
4EndNo more codeProgram ends
💡 Program ends after calling Logger.printMessage
Variable Tracker
VariableStartAfter 1After 2Final
Logger.prefixundefined"Log:""Log:""Log:"
Logger.printMessageundefinedfunction definedfunction definedfunction remains
Key Moments - 3 Insights
Why don't we create an instance of Logger with 'new'?
Because Logger is declared with 'object', Kotlin creates a singleton automatically, so no 'new' is needed. See execution_table step 1.
How can we access properties inside the object?
We use the object name directly, like Logger.prefix, as shown in execution_table step 2.
What happens when we call Logger.printMessage?
The function runs and prints the message with the prefix, as shown in execution_table step 3.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the value of Logger.prefix after step 2?
A"Log:"
B"Hello"
Cundefined
Dnull
💡 Hint
Check the 'Evaluation' and 'Result' columns in execution_table row 2.
At which step does the program print the message 'Log: Hello'?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
Look for the 'Prints' action in execution_table.
If we tried to create Logger with 'new Logger()', what would happen?
AIt would create a new instance
BIt would cause a compile error
CIt would call printMessage automatically
DIt would print 'Log: Hello'
💡 Hint
Recall that 'object' declarations are singletons and cannot be instantiated with 'new'.
Concept Snapshot
Kotlin object declaration syntax:
- Use 'object Name' to create a singleton
- Define properties and methods inside
- Access directly by Name.property or Name.method()
- No need to instantiate with 'new'
- Useful for single-instance utilities or holders
Full Transcript
This example shows how Kotlin's object declaration creates a singleton named Logger. The object has a property 'prefix' and a method 'printMessage'. When the program runs, Kotlin creates the Logger object automatically (step 1). We access the prefix property directly (step 2) and call the printMessage method (step 3), which prints the message with the prefix. The program ends after this (step 4). This shows that objects declared with 'object' are singletons and do not require instantiation with 'new'.

Practice

(1/5)
1. What does the object keyword in Kotlin do?
easy
A. Creates a function that returns an object
B. Defines a class that can be instantiated multiple times
C. Declares a variable of type Object
D. Creates a single instance with properties and functions

Solution

  1. Step 1: Understand the object keyword purpose

    The object keyword creates a singleton, meaning one single instance with properties and functions.
  2. Step 2: Compare with other options

    Classes can be instantiated multiple times, variables don't define singletons, and functions returning objects are different concepts.
  3. Final Answer:

    Creates a single instance with properties and functions -> Option D
  4. Quick Check:

    object keyword = single instance [OK]
Hint: Remember: object = one single instance [OK]
Common Mistakes:
  • Confusing object with class
  • Thinking object creates multiple instances
  • Mixing object with variable declaration
2. Which of the following is the correct syntax to declare an object named Config in Kotlin?
easy
A. object Config { }
B. val Config = object { }
C. class Config { }
D. fun Config() { }

Solution

  1. Step 1: Identify the object declaration syntax

    The correct syntax to declare a singleton object is using the object keyword followed by the name and curly braces.
  2. Step 2: Check other options

    class Config { } declares a class, B declares an anonymous object assigned to a val, and D declares a function, so they are incorrect.
  3. Final Answer:

    object Config { } -> Option A
  4. Quick Check:

    object keyword + name + braces = correct syntax [OK]
Hint: Use 'object Name { }' to declare singleton objects [OK]
Common Mistakes:
  • Using class instead of object
  • Assigning anonymous object to val instead
  • Using function syntax by mistake
3. What is the output of this Kotlin code?
object Logger {
    fun log(msg: String) = println("Log: $msg")
}

fun main() {
    Logger.log("Start")
}
medium
A. Log: Start
B. Start
C. Logger.log(Start)
D. Compilation error

Solution

  1. Step 1: Understand object usage

    The object Logger has a function log that prints "Log: " plus the message.
  2. Step 2: Trace the main function call

    Calling Logger.log("Start") prints "Log: Start" to the console.
  3. Final Answer:

    Log: Start -> Option A
  4. Quick Check:

    Logger.log("Start") prints "Log: Start" [OK]
Hint: Object functions called by object name print their output [OK]
Common Mistakes:
  • Expecting just the message without prefix
  • Thinking it prints the function call text
  • Assuming compilation error due to object usage
4. Identify the error in this Kotlin object declaration:
object Data {
    var count: Int
    fun increment() {
        count++
    }
}
medium
A. Cannot use 'var' inside object
B. Missing initialization for 'count' property
C. Function 'increment' should return Int
D. Object cannot have properties

Solution

  1. Step 1: Check property declaration

    The property 'count' is declared but not initialized or marked as abstract, which is invalid in objects.
  2. Step 2: Validate other options

    Objects can have vars, functions can be Unit-returning, and objects can have properties, so other options are incorrect.
  3. Final Answer:

    Missing initialization for 'count' property -> Option B
  4. Quick Check:

    Properties in objects must be initialized [OK]
Hint: Always initialize properties in objects or use lateinit [OK]
Common Mistakes:
  • Forgetting to initialize properties
  • Thinking vars are disallowed in objects
  • Expecting functions to always return a value
5. You want to create a singleton object Cache that stores key-value pairs and provides a function getValue(key: String): String?. Which of the following is the best Kotlin object declaration?
hard
A. fun Cache() = mutableMapOf() fun getValue(key: String) = Cache()[key]
B. class Cache { val map = mutableMapOf() fun getValue(key: String) = map[key] }
C. object Cache { private val map = mutableMapOf() fun getValue(key: String) = map[key] }
D. val Cache = mapOf() fun getValue(key: String) = Cache[key]

Solution

  1. Step 1: Identify singleton pattern

    Using object creates a singleton Cache with a private mutable map and a function to get values.
  2. Step 2: Compare other options

    class Cache { val map = mutableMapOf() fun getValue(key: String) = map[key] } is a class needing instances, C is a function returning a new map each time, D uses an immutable map and separate function, not encapsulated.
  3. Final Answer:

    object Cache { private val map = mutableMapOf() fun getValue(key: String) = map[key] } -> Option C
  4. Quick Check:

    Singleton object with private mutable map = object Cache { private val map = mutableMapOf() fun getValue(key: String) = map[key] } [OK]
Hint: Use object with private mutable map for singleton cache [OK]
Common Mistakes:
  • Using class instead of object for singleton
  • Returning new map each call instead of storing
  • Using immutable map when mutation is needed
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