Java

Abstract Class vs Interface Farkları

Daha önceki yazılarımızda Java dilinde abstraction işlemi için iki farklı yapının kullanıldığından bahsetmiştik. Bu yapılardan biri Abstract Class diğeri ise Interface olarak isimlendirilmektedir. Benzer amaçlarla kullanılan ve birbirlerine oldukça benzeyen abstract ve inteface yapıları, bazı önemli konularda birbirlerinden ayrılmaktadır. Bu yazıda, abstract class v interface farklarını sıralayacağız. İşte abstract ve interface farkları.

 

Reklam
Abstract class Interface
1) Abstract sınıflar, abstract metodlar ile birlikte abstract olmayan metodları da içerebilir. Interface ise yalnızca abstract metodları içerebilir. Fakat Java 8 ile birlikte istisnai bir durum olarak default ve static kelimeleri ile non-abstract methodlar oluşturmak mümkün hale gelmiştir.
2) Abstract class multiple inheritance’ı desteklemez Interface multiple inheritance’ı destekler. Yani bir class veya interface birden fazla interface’in alt sınıfı olabilir.
3) Abstract class, final, static olan veya olmayan değişkenler içerebilir. Interface ise yalnızca static ve final değişkenler içerebilir.
4) Abstract class bir interface’e implement edilebilir. Interface ise bir class’a implement veya extend edilemez.
5) Bir sınıfı abstract class’a çevirmek için abstract kelimesinin kullanılması zorunludur. Aynı şekilde abstract class içerinde oluşturulacak abstract metodlar için de abstract kelimesi kullanmak gerekir. Interface bizzatihi abstract olduğu için abstract kelimesini metotta veya interface ismi yanında kullanmaya gerek yoktur.
6) Abstract class bir interface’e implement veya bir class’a extend edilebilir. Bir interface yalnızca başka bir interface’e extend edilebilir.
7) Abstract class elemanları için private, protect, public vb erişim belirteçleri kullanılabilir. Interface elemanları public veya default’tur.
8) Abstract class, isminden de anlaşılabileceği gibi bir class’tır. Interface ise bir class değildir.
9)Örnek:
public abstract class OrnekClass{
public abstract void run();
}
Örnek:
public interface OrnekInterface{
void run();
}

Abstract class’lar ile Inteface’lerin paylaştığı çok sayıda ortak özellik olmak üzere, ayrıştığı alanlar ve özellikler bu şekildedir. Konuyla ilgili daha detaylı bilgiler için sitemizde bulunan Abstract ve Interface konuları ile ilgili yazıları inceleyebilirsiniz.

Author

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu