📖 Scenario: You are creating a simple Kotlin program to manage a single configuration object for an app. This object will hold some settings that the app uses.
🎯 Goal: Build a Kotlin program that declares an object using Kotlin's object declaration syntax. You will create the object, add a property, add a function, and then print the result of calling that function.
📋 What You'll Learn
Declare an object called AppConfig
Inside AppConfig, create a property called version with value "1.0.0"
Inside AppConfig, create a function called getInfo that returns a string combining the text "App version: " and the version property
Print the result of calling AppConfig.getInfo()
💡 Why This Matters
🌍 Real World
Kotlin objects are used to create single instances that hold configuration, utility functions, or shared data in Android apps and Kotlin programs.
💼 Career
Understanding object declaration syntax is important for Kotlin developers to write clean, organized code and manage shared resources effectively.
Progress0 / 4 steps
1
Declare the object AppConfig
Write a Kotlin object declaration named AppConfig with no properties or functions inside.
Kotlin
Hint
Use the object keyword followed by the name AppConfig and curly braces.
2
Add a property version to AppConfig
Inside the AppConfig object, add a val property called version and set it to the string "1.0.0".
Kotlin
Hint
Use val version = "1.0.0" inside the object.
3
Add a function getInfo to AppConfig
Inside the AppConfig object, add a function called getInfo that returns a string combining "App version: " and the version property using string templates.
Kotlin
Hint
Define fun getInfo(): String and return the string using "App version: $version".
4
Print the result of AppConfig.getInfo()
Write a println statement that prints the result of calling AppConfig.getInfo().
Kotlin
Hint
Use println(AppConfig.getInfo()) inside a main function.
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
Step 1: Understand the object keyword purpose
The object keyword creates a singleton, meaning one single instance with properties and functions.
Step 2: Compare with other options
Classes can be instantiated multiple times, variables don't define singletons, and functions returning objects are different concepts.
Final Answer:
Creates a single instance with properties and functions -> Option D
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
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.
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.
Final Answer:
object Config { } -> Option A
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
Step 1: Understand object usage
The object Logger has a function log that prints "Log: " plus the message.
Step 2: Trace the main function call
Calling Logger.log("Start") prints "Log: Start" to the console.
Final Answer:
Log: Start -> Option A
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
Step 1: Check property declaration
The property 'count' is declared but not initialized or marked as abstract, which is invalid in objects.
Step 2: Validate other options
Objects can have vars, functions can be Unit-returning, and objects can have properties, so other options are incorrect.
Final Answer:
Missing initialization for 'count' property -> Option B
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
Step 1: Identify singleton pattern
Using object creates a singleton Cache with a private mutable map and a function to get values.
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.
Final Answer:
object Cache {
private val map = mutableMapOf()
fun getValue(key: String) = map[key]
} -> Option C
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 unknownstrongwhile earning +1 Grip toward your certificate.