If you are implementing more than one interface and those interfaces have same
method signatures, then you will end up in conflict scenario.
HelloWorld.kt
interface Interface1{ fun welcomeMessage(name : String){ println("Welcome $name") } } interface Interface2{ fun welcomeMessage(name : String){ println("Good Morning $name") } } class MyClass : Interface1, Interface2{ }
When
you try to compile above program, you will end up in below error.
ERROR:
Class 'MyClass' must override public open fun welcomeMessage(name: String):
Unit defined in Interface1 because it inherits multiple interface methods of it
(13, 1)
How to resolve above
error?
By overriding the function welcomeMessage in MyClass, you can get rid of above error.
By overriding the function welcomeMessage in MyClass, you can get rid of above error.
class MyClass : Interface1, Interface2 { override fun welcomeMessage(name: String) { println("Hello $name") } }
Find
the below working application.
HelloWorld.kt
interface Interface1 { fun welcomeMessage(name: String) { println("Welcome $name") } } interface Interface2 { fun welcomeMessage(name: String) { println("Good Morning $name") } } class MyClass : Interface1, Interface2 { override fun welcomeMessage(name: String) { println("Hello $name") } } fun main(args: Array<String>) { var obj = MyClass() obj.welcomeMessage("krishna") }
Output
Hello Krishna
How can I call
interface method implementations from class?
By
using super keyword, you can call interface method implementations from a
class.
Ex
class
MyClass : Interface1, Interface2 {
override fun welcomeMessage(name:
String) {
super<Interface1>.welcomeMessage(name)
super<Interface2>.welcomeMessage(name)
}
}
Find
the below working application.
HelloWorld.kt
interface Interface1 { fun welcomeMessage(name: String) { println("Welcome $name") } } interface Interface2 { fun welcomeMessage(name: String) { println("Good Morning $name") } } class MyClass : Interface1, Interface2 { override fun welcomeMessage(name: String) { super<Interface1>.welcomeMessage(name) super<Interface2>.welcomeMessage(name) } } fun main(args: Array<String>) { var obj = MyClass() obj.welcomeMessage("krishna") }
Output
Welcome krishna Good Morning Krishna
No comments:
Post a Comment