logo

Soyut sınıf ve arayüz arasındaki fark

Soyut sınıf ve arayüzün her ikisi de soyut yöntemleri bildirebileceğimiz soyutlamayı elde etmek için kullanılır. Soyut sınıf ve arayüzün her ikisi de başlatılamaz.

Desktop.ini nedir?

Ancak soyut sınıf ile arayüz arasında aşağıda verilen birçok fark vardır.

Soyut sınıfArayüz
1) Soyut sınıf şunları yapabilir: soyut ve soyut olmayan var yöntemler.Arayüz olabilir sadece soyut yöntemler. Java 8'den bu yana, sahip olabilir varsayılan ve statik yöntemler Ayrıca.
2) Soyut sınıf çoklu kalıtımı desteklemiyor .Arayüz çoklu kalıtımı destekler .
3) Soyut sınıf final, final olmayan, statik ve statik olmayan değişkenlere sahip olabilir .Arayüz var yalnızca statik ve son değişkenler .
4) Soyut sınıf arayüzün uygulanmasını sağlayabilir .Arayüz soyut sınıfın uygulanmasını sağlayamıyor .
5) soyut anahtar kelime Soyut sınıfı bildirmek için kullanılır. arayüz anahtar kelimesi Arayüz bildirmek için kullanılır.
6) Bir soyut sınıf başka bir Java sınıfını genişletebilir ve birden fazla Java arayüzünü uygulayabilir.Bir arayüz yalnızca başka bir Java arayüzünü genişletebilir.
7) Bir soyut sınıf 'extens' anahtar kelimesi kullanılarak genişletilebilir.Bir arayüz 'uygulamalar' anahtar kelimesi kullanılarak uygulanabilir.
8) Java'ya soyut sınıf özel, korumalı vb. sınıf üyelerine sahip olabilir.Java arayüzünün üyeleri varsayılan olarak herkese açıktır.
9) Örnek:
genel soyut sınıf Shape{
genel soyut geçersiz çizim();
}
Örnek:
genel arayüz Çizilebilir{
geçersiz çizim();
}

Basitçe, soyut sınıf kısmi soyutlamayı (%0 ila %100) başarırken, arayüz tamamen soyutlamayı (%100) başarır.

Java'da soyut sınıf ve arayüz örneği

Hem arayüzü hem de soyut sınıfı kullandığımız basit bir örneğe bakalım.

 //Creating interface that has 4 methods interface A{ void a();//bydefault, public and abstract void b(); void c(); void d(); } //Creating abstract class that provides the implementation of one method of A interface abstract class B implements A{ public void c(){System.out.println('I am C');} } //Creating subclass of abstract class, now we need to provide the implementation of rest of the methods class M extends B{ public void a(){System.out.println('I am a');} public void b(){System.out.println('I am b');} public void d(){System.out.println('I am d');} } //Creating a test class that calls the methods of A interface class Test5{ public static void main(String args[]){ A a=new M(); a.a(); a.b(); a.c(); a.d(); }} 
Şimdi Test Edin

Çıktı:

 I am a I am b I am c I am d