An extension function lets you add new functions to existing classes without changing their source code. It looks like a normal function but is called as if it belongs to the class.
Click to reveal answer
beginner
How do you declare an extension function for the String class that returns the first character?
You write:
fun String.firstChar(): Char = this[0]
This adds a function called firstChar() to all String objects.
Click to reveal answer
intermediate
Can extension functions access private members of the class they extend?
No, extension functions cannot access private or protected members of the class. They work like regular functions with the receiver object passed in, so only public members are accessible.
Click to reveal answer
intermediate
What happens if an extension function has the same signature as a member function?
The member function always wins. The extension function is ignored when calling on an instance of the class.
Click to reveal answer
intermediate
Write an extension property for List<Int> that returns the sum of all elements.
You can write:
val List<Int>.sumOfElements: Int get() = this.sum()
This adds a read-only property to List<Int>.
Click to reveal answer
How do you call an extension function on a String named 'greet'?
Agreet("Hello")
B"Hello".greet()
CString.greet("Hello")
Dcall greet on "Hello"
✗ Incorrect
Extension functions are called like normal member functions on the object.
Can extension functions modify the original object they extend?
AOnly if the object is mutable
BNo, they cannot modify the original object
CYes, they can change private fields
DYes, but only for built-in types
✗ Incorrect
Extension functions can modify the object if it is mutable, like a MutableList, but they cannot access private fields.
What keyword is used to declare an extension function in Kotlin?
Aoverride
Bextend
Cfun
Dextension
✗ Incorrect
Extension functions are declared with the fun keyword, followed by the receiver type.
If a class has a member function and an extension function with the same name and parameters, which one is called?
ACompilation error
BExtension function
CBoth are called
DMember function
✗ Incorrect
Member functions have higher priority than extension functions.
Which of these is a valid extension property declaration for Int?
Aval Int.isEven get() = this % 2 == 0
Bvar Int.isEven = this % 2 == 0
Cfun Int.isEven() = this % 2 == 0
Dproperty Int.isEven get() = this % 2 == 0
✗ Incorrect
Extension properties must be declared with val or var and use a getter; var is not allowed without backing field.
Explain what extension functions are and how they help when working with built-in types in Kotlin.
Think about how you can add new abilities to existing classes.
You got /3 concepts.
Describe the difference between member functions and extension functions when they have the same name.
Consider what happens when Kotlin looks for a function to call.
You got /3 concepts.
Practice
(1/5)
1. What is the main purpose of extension functions in Kotlin?
easy
A. To create new classes that inherit from built-in types
B. To add new functions to existing types without modifying their source code
C. To override existing functions in built-in types
D. To convert one type to another automatically
Solution
Step 1: Understand extension functions concept
Extension functions allow adding new functions to existing types without changing their original code.
Step 2: Compare options with concept
Only To add new functions to existing types without modifying their source code correctly describes this purpose. Options B and C talk about inheritance and overriding, which are different concepts. To convert one type to another automatically is unrelated.
Final Answer:
To add new functions to existing types without modifying their source code -> Option B
Quick Check:
Extension functions add new behavior without changing original code [OK]
Hint: Remember: extensions add functions, not change classes [OK]
Common Mistakes:
Confusing extension functions with inheritance
Thinking extensions override existing methods
Believing extensions convert types automatically
2. Which of the following is the correct syntax to define an extension function isEven for Int in Kotlin?
easy
A. fun Int.isEven(): Boolean { return this % 2 == 0 }
B. fun isEven(): Boolean { return this % 2 == 0 }
C. fun Int.isEven: Boolean = this % 2 == 0
D. fun isEven(Int): Boolean = Int % 2 == 0
Solution
Step 1: Recall extension function syntax
Extension functions are declared as fun TypeName.functionName(). Here, Int.isEven() is correct.
Step 2: Check each option
fun Int.isEven(): Boolean { return this % 2 == 0 } matches the correct syntax. fun isEven(): Boolean { return this % 2 == 0 } misses the receiver type. fun Int.isEven: Boolean = this % 2 == 0 misses parentheses. fun isEven(Int): Boolean = Int % 2 == 0 has wrong parameter syntax.
Final Answer:
fun Int.isEven(): Boolean { return this % 2 == 0 } -> Option A
Quick Check:
Extension syntax = fun TypeName.functionName() [OK]
Hint: Extension syntax always starts with fun TypeName.functionName() [OK]
Common Mistakes:
Omitting the receiver type before function name
Missing parentheses after function name
Using parameter instead of receiver for extension
3. What will be the output of this Kotlin code?
fun String.addExclamation() = this + "!"
fun main() {
val word = "Hello"
println(word.addExclamation())
}
medium
A. Hello
B. Hello!!
C. Compilation error
D. Hello!
Solution
Step 1: Understand the extension function behavior
The extension function addExclamation adds an exclamation mark to the string.
Step 2: Trace the main function output
Calling word.addExclamation() returns "Hello!" which is printed.
Final Answer:
Hello! -> Option D
Quick Check:
Extension adds "!" so output is "Hello!" [OK]
Hint: Extension functions act like normal methods on the type [OK]
Common Mistakes:
Expecting original string unchanged
Thinking extension adds multiple exclamations
Assuming syntax error due to extension
4. Identify the error in this Kotlin extension function and fix it:
fun Int.isPositive {
return this > 0
}
medium
A. Missing parentheses after function name; should be fun Int.isPositive()
B. Extension functions cannot return Boolean
C. The receiver type Int is invalid for extensions
D. The return statement is not allowed in extension functions
Solution
Step 1: Check function declaration syntax
Extension functions must have parentheses after the function name, even if no parameters.
Step 2: Identify the fix
Add parentheses: fun Int.isPositive(). Other options are incorrect because Boolean return is allowed, Int is valid receiver, and return statements are allowed.
Final Answer:
Missing parentheses after function name; should be fun Int.isPositive() -> Option A
Quick Check:
Extension functions need () after name [OK]
Hint: Always add () after extension function name, even if no parameters [OK]
Common Mistakes:
Omitting parentheses after function name
Thinking extensions can't return values
Confusing receiver type validity
5. You want to create an extension function wordCount for String that returns the number of words separated by spaces. Which implementation correctly handles multiple spaces and empty strings?
hard
A. fun String.wordCount() = this.split(" ").size
B. fun String.wordCount() = this.count { it == ' ' }
C. fun String.wordCount() = this.trim().split(" ").filter { it.isNotEmpty() }.size
D. fun String.wordCount() = this.length
Solution
Step 1: Understand the problem requirements
We need to count words separated by spaces, ignoring extra spaces and empty strings.
Step 2: Analyze each option
fun String.wordCount() = this.split(" ").size splits by space but counts empty strings if multiple spaces exist. fun String.wordCount() = this.trim().split(" ").filter { it.isNotEmpty() }.size trims, splits, filters out empty strings, then counts, correctly handling multiple spaces and empty strings. fun String.wordCount() = this.length returns string length, unrelated. fun String.wordCount() = this.count { it == ' ' } counts spaces, not words.
Final Answer:
fun String.wordCount() = this.trim().split(" ").filter { it.isNotEmpty() }.size -> Option C
Quick Check:
Trim, split, filter empty = correct word count [OK]
Hint: Trim and filter empty strings after split to count words correctly [OK]
Common Mistakes:
Counting empty strings as words
Using string length instead of word count
Counting spaces instead of words
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.