Interface: Basitçe iki varlık arasındaki iletişimi sağlar. Türkçeye arayüz olarak çevirilen interfaceler, nesne yönelimli programlamanın temel yapılarındandır.
Aşağıda birkaç interface örneği göstereceğim, yorum yaparak anlamadığınız noktaları sorabilirsiniz.
Örnek1:
interface Person {
fun name()
fun age() {
// optional body
}
}
Implementing Interface
Örnek2: class Child : Person {
override fun name() {
// body
}override fun age() {
// body
}
}
Örnek2’de gördüğünüza üzere bir interface’den implemente edilen bir sınıf, o interface’de bulunan methodları override etmek zorundadır.
Interface’lerde Değişkenler
Örnek3: interface MyInterface {
val prop: Int // abstract
val propertyWithImplementation: String
get() = “foo”
fun foo() {
print(prop)
}
}
class Child : MyInterface {
override val prop: Int = 29
}
Kalıtım
Örnek4: interface Named {
val name: String
}
interface Person : Named {
val firstName: String
val lastName: String
override val name: String get() = “$firstName $lastName”
}
data class Employee(
// implementing ‘name’ is not required
override val firstName: String,
override val lastName: String,
val position: Position
) : Person
Çoklu Kalıtım Problemleri ve Çözümleri
interface A {
fun foo() { print(“A”) }
fun bar()
}
interface B {
fun foo() { print(“B”) }
fun bar() { print(“bar”) }
}
class C : A {
override fun bar() { print(“bar”) }
}
class D : A, B {
override fun foo() {
super.foo()
super.foo()
}
override fun bar() {
super.bar()
}
}
Sorularınızı ve isteklerinizi yorum bölümünden iletebilirsiniz.