logo

Java'da arayüz

  1. Arayüz
  2. Arayüz Örneği
  3. Arayüze göre çoklu miras
  4. Sınıf durumunda desteklenmezken Arayüzde neden çoklu miras destekleniyor?
  5. İşaretleyici Arayüzü
  6. İç İçe Arayüz

Bir Java'daki arayüz bir sınıfın planıdır. Statik sabitlere ve soyut yöntemlere sahiptir.

Java'daki arayüz ulaşmak için bir mekanizma soyutlama . Java arayüzünde yöntem gövdesinde değil, yalnızca soyut yöntemler bulunabilir. Soyutlama ve çoklu elde etmek için kullanılır Java'da miras .

Yani arayüzlerin soyut metotlara ve değişkenlere sahip olabileceğini söyleyebiliriz. Bir yöntem gövdesine sahip olamaz.

Java Arayüzü ayrıca IS-A ilişkisini temsil eder .

Soyut sınıf gibi örneklenemez.

Java 8'den bu yana şunları yapabiliriz: varsayılan ve statik yöntemler bir arayüzde.

Java 9'dan bu yana şunları yapabiliriz: özel yöntemler bir arayüzde.

Neden Java arayüzünü kullanmalıyım?

Arayüzü kullanmanın başlıca üç nedeni vardır. Aşağıda verilmiştir.

  • Soyutlamayı gerçekleştirmek için kullanılır.
  • Arayüz sayesinde çoklu kalıtımın işlevselliğini destekleyebiliriz.
  • Gevşek bağlantı elde etmek için kullanılabilir.
Java Arayüzünü neden kullanmalı?

Bir arayüz nasıl bildirilir?

Arayüz anahtar sözcüğü kullanılarak bir arayüz bildirilir. Tam bir soyutlama sağlar; bir arayüzdeki tüm yöntemlerin boş gövdeyle bildirildiği ve tüm alanların varsayılan olarak genel, statik ve final olduğu anlamına gelir. Bir arayüzü uygulayan bir sınıf, arayüzde bildirilen tüm yöntemleri uygulamalıdır.

seçim çerçevesi html

Sözdizimi:

 interface { // declare constant fields // declare methods that abstract // by default. } 

Java 8 Arayüz İyileştirmesi

O zamandan beri Java 8 Arayüz daha sonra tartışılacak olan varsayılan ve statik yöntemlere sahip olabilir.

Derleyici tarafından dahili ekleme

Java derleyicisi, arayüz yönteminden önce genel ve soyut anahtar sözcükleri ekler. Ayrıca public, static ve final anahtar kelimelerini veri üyelerinden önce ekler.

Başka bir deyişle, Arayüz alanları varsayılan olarak genel, statik ve nihaidir ve yöntemler genel ve soyuttur.

Java'daki arayüz

Sınıflar ve arayüzler arasındaki ilişki

Aşağıdaki şekilde gösterildiği gibi, bir sınıf başka bir sınıfı genişletir, bir arayüz başka bir arayüzü genişletir, ancak bir sınıf bir arayüz uygular .

Sınıf ve arayüz arasındaki ilişki

Java Arayüzü Örneği

Bu örnekte Printable arayüzünün tek bir metodu vardır ve onun uygulaması A6 sınıfında sağlanmıştır.

 interface printable{ void print(); } class A6 implements printable{ public void print(){System.out.println('Hello');} public static void main(String args[]){ A6 obj = new A6(); obj.print(); } } 
Şimdi Test Edin

Çıktı:

 Hello 

Java Arayüzü Örneği: Çizilebilir

Bu örnekte Drawable arayüzünün yalnızca bir yöntemi vardır. Uygulanması Rectangle ve Circle sınıfları tarafından sağlanır. Gerçek bir senaryoda, bir arayüz başkası tarafından tanımlanır, ancak uygulanması farklı uygulama sağlayıcıları tarafından sağlanır. Üstelik başkası tarafından kullanılıyor. Uygulama kısmı arayüzü kullanan kullanıcı tarafından gizlenir.

Dosya: TestInterface1.java

 //Interface declaration: by first user interface Drawable{ void draw(); } //Implementation: by second user class Rectangle implements Drawable{ public void draw(){System.out.println('drawing rectangle');} } class Circle implements Drawable{ public void draw(){System.out.println('drawing circle');} } //Using interface: by third user class TestInterface1{ public static void main(String args[]){ Drawable d=new Circle();//In real scenario, object is provided by method e.g. getDrawable() d.draw(); }} 
Şimdi Test Edin

Çıktı:

 drawing circle 

Java Arayüzü Örneği: Banka

Banka arayüzünün uygulanmasını sağlayan başka bir java arayüzü örneğini görelim.

Dosya: TestInterface2.java

 interface Bank{ float rateOfInterest(); } class SBI implements Bank{ public float rateOfInterest(){return 9.15f;} } class PNB implements Bank{ public float rateOfInterest(){return 9.7f;} } class TestInterface2{ public static void main(String[] args){ Bank b=new SBI(); System.out.println('ROI: '+b.rateOfInterest()); }} 
Şimdi Test Edin

Çıktı:

 ROI: 9.15 

Java'da arayüze göre çoklu kalıtım

Bir sınıf birden çok arabirimi gerçekliyorsa veya bir arabirim birden çok arabirimi genişletiyorsa buna çoklu kalıtım denir.

Java'da çoklu kalıtım
 interface Printable{ void print(); } interface Showable{ void show(); } class A7 implements Printable,Showable{ public void print(){System.out.println('Hello');} public void show(){System.out.println('Welcome');} public static void main(String args[]){ A7 obj = new A7(); obj.print(); obj.show(); } } 
Şimdi Test Edin
 Output:Hello Welcome 

S) Java'da sınıf yoluyla çoklu kalıtım desteklenmiyor, ancak bir arayüzle mümkün, neden?

Miras bölümünde de açıkladığımız gibi çoklu miras desteklenmemektedir. sınıf belirsizlik nedeniyle. Ancak herhangi bir belirsizlik olmadığı için arayüz olması durumunda desteklenir. Çünkü uygulanması uygulama sınıfı tarafından sağlanmaktadır. Örneğin:

 interface Printable{ void print(); } interface Showable{ void print(); } class TestInterface3 implements Printable, Showable{ public void print(){System.out.println('Hello');} public static void main(String args[]){ TestInterface3 obj = new TestInterface3(); obj.print(); } } 
Şimdi Test Edin

Çıktı:

güneşli deol yaşı
 Hello 

Yukarıdaki örnekte görebileceğiniz gibi, Printable ve Showable arayüzü aynı metodlara sahiptir ancak uygulaması TestTnterface1 sınıfı tarafından sağlanmaktadır, dolayısıyla herhangi bir belirsizlik yoktur.


Arayüz mirası

Bir sınıf bir arayüzü uygular, ancak bir arayüz başka bir arayüzü genişletir.

 interface Printable{ void print(); } interface Showable extends Printable{ void show(); } class TestInterface4 implements Showable{ public void print(){System.out.println('Hello');} public void show(){System.out.println('Welcome');} public static void main(String args[]){ TestInterface4 obj = new TestInterface4(); obj.print(); obj.show(); } } 
Şimdi Test Edin

Çıktı:

 Hello Welcome 

Arayüzde Java 8 Varsayılan Yöntemi

Java 8'den beri arayüzde yöntem gövdesine sahip olabiliyoruz. Ancak bunu varsayılan yöntem yapmamız gerekiyor. Bir örnek görelim:

Dosya: TestInterfaceDefault.java

 interface Drawable{ void draw(); default void msg(){System.out.println('default method');} } class Rectangle implements Drawable{ public void draw(){System.out.println('drawing rectangle');} } class TestInterfaceDefault{ public static void main(String args[]){ Drawable d=new Rectangle(); d.draw(); d.msg(); }} 
Şimdi Test Edin

Çıktı:

 drawing rectangle default method 

Arayüzde Java 8 Statik Yöntemi

Java 8'den beri arayüzde statik yönteme sahip olabiliriz. Bir örnek görelim:

Dosya: TestInterfaceStatic.java

 interface Drawable{ void draw(); static int cube(int x){return x*x*x;} } class Rectangle implements Drawable{ public void draw(){System.out.println('drawing rectangle');} } class TestInterfaceStatic{ public static void main(String args[]){ Drawable d=new Rectangle(); d.draw(); System.out.println(Drawable.cube(3)); }} 
Şimdi Test Edin

Çıktı:

 drawing rectangle 27 

S) İşaretçi veya etiketli arayüz nedir?

Hiçbir üyesi olmayan bir arayüz, işaretleyici veya etiketli arayüz olarak bilinir; örneğin, Serileştirilebilir , Klonlanabilir, Uzaktan vb. JVM'nin bazı yararlı işlemleri gerçekleştirebilmesi için JVM'ye bazı temel bilgileri sağlamak için kullanılırlar.

 //How Serializable interface is written? public interface Serializable{ } 

Java'da İç İçe Arayüz

Not: Bir arayüz, iç içe arayüz olarak bilinen başka bir arayüze sahip olabilir. Bunu ayrıntılı olarak öğreneceğiz. iç içe geçmiş sınıflar bölüm. Örneğin:

 interface printable{ void print(); interface MessagePrintable{ void msg(); } } 
İç İçe Arayüz hakkında daha fazla bilgi