0
0
Kotlinprogramming~20 mins

Multiple interface implementation in Kotlin - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Multiple Interface Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of multiple interface implementation with method override
What is the output of this Kotlin code when the test() function is called?
Kotlin
interface A {
    fun greet() = "Hello from A"
}

interface B {
    fun greet() = "Hello from B"
}

class C : A, B {
    override fun greet(): String {
        return super<A>.greet() + " and " + super<B>.greet()
    }
}

fun test() {
    val c = C()
    println(c.greet())
}
AHello from B and Hello from A
BHello from A
CCompilation error due to ambiguous greet()
DHello from A and Hello from B
Attempts:
2 left
💡 Hint
Look at how super is used to specify which interface's method to call.
Predict Output
intermediate
2:00remaining
Which method is called in multiple interface implementation?
Given the following Kotlin code, what will be printed when test() is executed?
Kotlin
interface X {
    fun action() = "Action from X"
}

interface Y {
    fun action() = "Action from Y"
}

class Z : X, Y {
    override fun action(): String {
        return super<Y>.action()
    }
}

fun test() {
    val z = Z()
    println(z.action())
}
AAction from Y
BAction from X
CCompilation error due to ambiguity
DRuntime error
Attempts:
2 left
💡 Hint
Check which interface's method is explicitly called with super.
🔧 Debug
advanced
2:00remaining
Identify the error in multiple interface implementation
What error will this Kotlin code produce when compiled?
Kotlin
interface M {
    fun foo() = "M"
}

interface N {
    fun foo()
}

class O : M, N {
    // No override of foo()
}
ACompilation error: Class O must override foo()
BNo error, compiles successfully
CCompilation error: Conflicting implementations of foo()
DRuntime error: foo() not implemented
Attempts:
2 left
💡 Hint
Check which interface requires foo() to be implemented and which provides a default.
📝 Syntax
advanced
2:00remaining
Correct syntax for multiple interface implementation with property
Which option correctly implements two interfaces with a property of the same name in Kotlin?
Kotlin
interface P {
    val value: String
}

interface Q {
    val value: String
}

class R : P, Q {
    // Implement value here
}
Aoverride fun value() = "Hello"
Boverride var value = "Hello"
Coverride val value = "Hello"
Dval value = "Hello"
Attempts:
2 left
💡 Hint
Properties from interfaces must be overridden with 'override val' or 'override var'.
🚀 Application
expert
3:00remaining
Implement a class that combines behaviors from two interfaces
You have two interfaces in Kotlin:

interface Logger { fun log(msg: String) }
interface Printer { fun print(msg: String) }

Implement a class Console that implements both interfaces. The log method should print the message prefixed with "LOG: ", and the print method should print the message prefixed with "PRINT: ".

Which of the following class implementations correctly does this?
A
class Console : Logger, Printer {
    fun log(msg: String) {
        println("LOG: $msg")
    }
    fun print(msg: String) {
        println("PRINT: $msg")
    }
}
B
class Console : Logger, Printer {
    override fun log(msg: String) {
        println("LOG: $msg")
    }
    override fun print(msg: String) {
        println("PRINT: $msg")
    }
}
C
class Console : Logger, Printer {
    override fun log(msg: String) {
        println("PRINT: $msg")
    }
    override fun print(msg: String) {
        println("LOG: $msg")
    }
}
D
class Console : Logger, Printer {
    override fun log(msg: String) = println("LOG: $msg")
}
Attempts:
2 left
💡 Hint
Remember to use 'override' keyword for interface methods and implement both methods.