Soyut sınıf ve arayüz hem soyutlama için kullanılır, ancak birbirinden çok farklıdırlar. Her ikisi de Java'nın çekirdek parçasıdır ancak kendi uygulama kullanımları vardır. Her iki terim birbiriyle eşanlamlı olsa da, birbirlerinin yerine kullanılamazlar.
İkisi arasında önemli farklar var. Bir arabirim yöntemi varsayılan olarak soyut olsa da, bir özet hem soyut hem de soyut olmayan yöntemleri içerebilir. Java 8'den beri, arayüzlerin yöntem uygulamaları da vardır ve Java'da hem statik hem de varsayılan yöntemlere sahip olabilirler. İkisi arasındaki farkı detaylı olarak inceleyelim.
Java'daki bir soyut sınıf, soyut olarak bildirilen bir sınıftır - soyut yöntemler içerebilir veya içermeyebilir. Varsayılan yöntem uygulamasını içerebilmesi dışında bir Java arabirimine oldukça benzer. Nesne yönelimli programlamada olduğu gibi, Java'daki soyutlama da soyut sınıflar ve arayüzler kullanılarak elde edilir. Java'da soyutlama, etkinliği artırmak ve karmaşıklığı azaltmak için alakasız ayrıntıları kullanıcıdan yalnızca temel ayrıntılara odaklanmak üzere gizlemek anlamına gelir. “Abstract” anahtar kelimesi, sınıf bildirimindeki class anahtar kelimesinden hemen önce soyut bir sınıf oluşturmak için kullanılır.
Soyut bir sınıf soyutlama yöntemleri (bedensiz yöntemler) içerebilir veya içermeyebilir, ancak bir sınıfın en az bir soyutlama yöntemi varsa, soyut olarak bildirilmesi gerekir. Bununla birlikte, soyut olmayan yöntemler yalnızca soyut bir sınıfta da kullanılabilir, ancak yalnızca varsayılan davranışı uygulamak için kullanılabilir. Soyut bir sınıftaki yöntemler, görünürlük seviyesine bağlı olarak özel, genel, statik ve korumalı gibi erişim değiştiricilere sahip olabilir. Soyut bir sınıf somutlaştırılamaz ve somut bir yöntemi olabileceği için yüzde 100 soyutlama sağlamaz.
Bir arayüz bir sınıfa benziyor, öyle değil. Java birden fazla devralmayı desteklemediğinden, bazen arabirim sınıf hiyerarşisine temel sağlamak için idealdir. Bir arayüz, Java'da soyutlama elde etmek için de kullanılan bir sınıfın ayrıntılı bir planıdır. Soyut yöntemler ve statik sabitler içerir. Basit bir ifadeyle, arabirim, sınıfın uygulamak zorunda olduğu bir davranışı belirtmek için kullanılan soyut yöntemlerin bir koleksiyonudur. Soyut sınıftan farklı olarak, bir arayüz Java'da tam soyutlama sağlar. Bir sınıf gibi hem yöntemlere hem de değişkenlere sahip olabilir, ancak arabirimde bildirilen yöntemler varsayılan olarak soyuttur.
Soyut Sınıf | Arayüz |
Abstract anahtar sözcüğü soyut bir sınıf oluşturmak için kullanılır ve yöntemlerle kullanılabilir. | Arayüz anahtar sözcüğü bir arayüz oluşturmak için kullanılır, ancak yöntemlerle kullanılamaz. |
Bir sınıf yalnızca bir soyut sınıfı genişletebilir. | Bir sınıf birden fazla arabirim uygulayabilir. |
Soyut bir sınıf hem soyut hem de soyut olmayan yöntemlere sahip olabilir. | Bir arayüzün yalnızca soyut yöntemleri olabilir. |
Değişkenler varsayılan olarak son değildir. Nihai olmayan değişkenler içerebilir. | Değişkenler varsayılan olarak bir arabirimde kesindir. |
Soyut bir sınıf bir arabirimin uygulanmasını sağlayabilir. | Bir arabirim soyut bir sınıfın uygulanmasını sağlayamaz. |
Uygulama yöntemlerine sahip olabilir. | Mutlak soyutlama sağlar ve yöntem uygulamaları olamaz. |
Genel, özel, statik ve korumalı erişim değiştiricilere sahip olabilir. | Yöntemler, Java arabiriminde dolaylı olarak genel ve soyuttur. |
Birden fazla mirası desteklemiyor. | Birden fazla mirası destekler. |
Kodun yeniden kullanımı ve evrim perspektifi için idealdir. | Tip beyanı için idealdir. |
Soyut sınıf ve arabirim soyutlama için kullanılır; ancak, farklılıklardan adil payları vardır. İkisi arasındaki temel fark soyutlama yöntemleri tarafından yönlendirilir. Birincisi soyut yöntemlere sahip olabilir veya olmayabilir de, ikincisi dolaylı olarak soyuttur. Soyut bir sınıf hem soyut hem de soyut olmayan yöntemlere sahip olabilir. Öte yandan, bir arayüz sadece soyut yöntemlere sahip olabilir, bu yüzden uygulama yapamazlar, yani bir arayüzün soyut olmayan yöntemlere sahip olamayacağı anlamına gelir. Bir nesnenin yaratılmasını yasaklayan soyut bir sınıf somutlaştırılamaz. Öte yandan, bir arayüz bir sınıfa benzeyebilir, ancak.