Soyut Sınıf ve Arayüz
Abstract sınıfı ve Interface, Java gibi birçok nesne yönelimli programlama dilinde bulunan iki nesne yönelimli yapıdır. Soyut sınıf, düzenli (somut) bir sınıfın soyut bir versiyonu olarak düşünülebilirken, bir arayüz bir sözleşmenin uygulanması için bir araç olarak düşünülebilir. Soyut sınıf, başlatılamayan ancak genişletilebilen bir sınıftır. Arabirim, diğer sınıflar tarafından uygulanması gereken bir türdür. Java'da, Abstract sınıfları Abstract anahtar sözcüğü kullanılarak bildirilirken, interface anahtar sözcüğü bir arabirimi tanımlamak için kullanılır.
Soyut Sınıf Nedir?
Genellikle, Soyut Temel Sınıflar (ABC) olarak da bilinen Abstract sınıfları somutlaştırılamaz (bu sınıfın bir örneği oluşturulamaz). Bu nedenle, Abstract sınıfları yalnızca programlama dilinin mirası destekliyorsa (bir sınıfı genişleterek alt sınıflar oluşturma yeteneği) sahip olmak anlamlıdır. Soyut sınıflar genellikle kısmi veya hiç uygulaması olmayan soyut bir kavramı veya varlığı temsil eder. Bu nedenle, Abstract sınıfları alt sınıfların türetildiği üst sınıflar olarak işlev görür, böylece alt sınıf üst sınıfın eksik özelliklerini paylaşır ve bunları tamamlamak için işlevsellik eklenebilir.
Soyut sınıflar Soyut yöntemler içerebilir. Bir soyut sınıfı genişleten alt sınıflar bu (kalıtsal) Soyut yöntemleri uygulayabilir. Çocuk sınıfı tüm bu Soyut yöntemleri uygularsa, somut bir sınıftır. Ama eğer olmazsa, çocuk sınıfı da bir Soyut sınıf haline gelir. Tüm bunların anlamı, programcı bir sınıfı bir Özet olarak aday gösterdiğinde, sınıfın eksik olacağını ve miras kalan alt sınıflar tarafından tamamlanması gereken unsurlara sahip olacağını söylüyor. Bu, iki programcı arasında yazılım geliştirmedeki görevleri basitleştiren bir sözleşme oluşturmanın güzel bir yoludur. Devralmak için kod yazan programcı, yöntem tanımlarını tam olarak izlemelidir (ancak elbette kendi uygulamasına sahip olabilir).
Arayüz Nedir?
Bir arabirim, söz konusu arabirimi uygulayan sınıflar tarafından uygulanması gereken bir sözleşmeyi belirtmek için kullanılan soyut bir türdür. İnterface anahtar sözcüğü bir arabirimi tanımlamak için kullanılır ve Implements anahtar sözcüğü, bir sınıfa (Java programlama dilinde) bir arabirim uygulamak için kullanılır. Genellikle bir arabirim yalnızca yöntem imzaları ve sabit bildirimler içerir. Belirli bir arabirimi uygulayan herhangi bir arabirim, arabirimde tanımlanan tüm yöntemleri uygulamalı veya soyut bir sınıf olarak bildirilmelidir. Java'da, nesne başvurusunun türü arabirim türü olarak tanımlanabilir. Ancak bu nesne boş olmalı veya söz konusu arabirimi uygulayan bir sınıf nesnesine sahip olmalıdır. Java'da Implements anahtar sözcüğünü kullanarak, tek bir sınıfa birden çok arabirim uygulayabilirsiniz.
Abstract Class ve Interface arasındaki fark nedir?
Soyut sınıflar genellikle soyut bir kavramı veya kısmi ya da hiç uygulaması olmayan bir varlığı temsil eder. Öte yandan, bir arabirim sınıflar tarafından uygulanması gereken bir sözleşmeyi belirtmek için kullanılan soyut bir türdür. Soyut sınıflar devralınmalı (veya genişletilmelidir), arayüzler uygulanmalıdır. Soyut sınıflar soyut yöntemler içerebilirken, bir arayüz sadece soyut yöntemler içermelidir. Abstract sınıfları herhangi bir değişken içerebilir, ancak Arayüzler sadece sabitleri tanımlayabilir. Bir sınıf birden fazla soyut sınıftan miras alınamaz ancak birden çok arabirim uygulayabilir. Arayüz başka bir arayüz uygulayamaz. Ancak bir arabirim bir sınıfı genişletebilir.