Interface ve Class Farkı

Interface vs. Class

Adile Güngör ♾️ 🌎
Women in Technology
2 min readAug 3, 2023

--

Class ve Interface arasındaki fark hep kafamı karıştırmıştır. Ben de bu konuyu detaylı araştırmaya karar verdim. Bu süreci sizlerle paylaşmaktan mutluluk duyuyorum.

Interface (Arayüz):
İşte sana bir metafor: Interface, bir yoldaş anlamına gelir. Arabanın direksiyonuna geçince, onun sana nasıl davranması gerektiğini belirtirsin. Yani, “Direksiyon, sağa dön, sola dön, ileri git!” gibisinden.
Bir Interface, aslında sadece davranışları belirten bir sözleşmedir. Ne yapılacağını söyler, ama nasıl yapılacağını değil. Yani işin mantığını belirtmez, sadece ne yapılacağını tarif eder.
İnsanların sıklıkla yanlış anladığı şey, bir Interface’in aslında bir somut nesne olmamasıdır. Sadece bir kılavuz gibidir. Arayüzler, sınıfları bir araya getiren, birlikte çalışmalarını sağlayan bir yapıcıdır.

Photo by Kelly Sikkema on Unsplash

Class (Sınıf):
Sınıfı, tam olarak o direksiyon gibi düşün. Bir araba sınıfı oluşturuyorsan, direksiyon, tekerlekler, koltuklar ve benzeri şeylerle ne yapılacağını belirtirsin.
Bir sınıf, bir nesnenin taslağını oluşturur. Yani nasıl davranacağını, özelliklerini ve işlevlerini içerir.
Bir sınıf, somut bir örnektir. Arabanın tamamı, gerçek bir şeydir, yollarda sürebilirsin. Aynı şekilde, bir sınıfı da gerçek nesneler oluşturmak için kullanabilirsin.

Peki, Neden Her İkisine de İhtiyacımız Var?
İşte burası çok güzel. Interface ve sınıflar, birbirleriyle harika bir ekiple çalışırlar. Arabanın tamamı (sınıf), direksiyon (arayüz) ile birleşirse, o zaman kontrol edebileceğin güçlü ve esnek bir araban olur!

Arayüzler, kodun daha düzenli ve anlaşılır olmasını sağlar. Bir sınıf, birçok arayüzü uygulayabilir ve farklı davranışları destekleyebilir. Mesela, bir araba sınıfı, “Sesli Komutlar” arayüzünü uygulayarak “Hey araba, müziği aç!” gibi sesli komutları dinleyebilir. Deneyelim mi?

interface SesliKomutlar {
fun sesliKomutAl(komut: String)
}

class Araba : SesliKomutlar {
override fun sesliKomutAl(komut: String) {
if (komut.contains("müziği aç", true)) {
println("Müzik açılıyor...")
// Müzik açma işlemleri burada yapılabilir.
} else if (komut.contains("müziği kapat", true)) {
println("Müzik kapatılıyor...")
// Müzik kapatma işlemleri burada yapılabilir.
} else {
println("Anlaşılamayan komut: $komut")
}
}
}

fun main() {
val araba = Araba()
araba.sesliKomutAl("Hey araba, müziği aç!") // "Müzik açılıyor..."
araba.sesliKomutAl("Hey araba, müziği kapat!") // "Müzik kapatılıyor..."
araba.sesliKomutAl("Hey araba, hızlan!") // "Anlaşılamayan Komut:Hey araba, hızlan!"
}

Main fonksiyonunda Araba sınıfını örnekleyerek sesli komutları dinliyoruz ve sonuçları ekrana yazdırıyoruz. Gerçek uygulamada, bu fonksiyonları gerçek araba kontrol işlemleriyle değiştirebilir ve arabanızı sesli komutlarla kontrol edebilirsiniz. Ses tanıma işlemleri genellikle yerel olarak yapılmayacağından, gerçek bir uygulamada Google Asistan API kullanarak sesi metne dönüştürmeniz gerekecektir.

Arayüzler ve sınıflar, programlama dünyasında kod karmaşasını azaltır! Aralarındaki birliktelik, kod yazmayı daha eğlenceli ve daha az kafa karıştırıcı hale getirir. Bu konu hakkında daha detaylı bilgi almak istiyorsanız Abstract Class ve Interface Arasındaki Farklar Nelerdir? yazısını okuyunuz.

Çok gecikmeden bir sonraki yazımızda görüşmek üzere! Sevgiler

--

--