Başlıkta da dediği gibi, Interface(arabirim) Java dilinde nesneleri dünyaya sunmanın bir yolu.
Sınıflar(class) ile interface arasındaki fark sınıfların içinde tüm metotlar (method) için bir uyarlama/uygulama(implementation) gerekiyorken bir interface için tanımlama yapmanız yeterli olacak ve sonra davranış biçimini belirlemek adına diğer sınıflar içerisinde tanımlamanız yeterli olacaktır.Karışık göründüğüne yada anlatamadığıma bakmayın aşağıda vereceğim örnekler ile sıkıntı olmadan “yaaa !! bumuymuş” kıvamına geleceğiz.
Öncelikle size bir sınıf örneği vereceğim :
public class Araba{
private String model;
public void calistir(){
System.out.println(model +
” çalışır!”);
}
Bu da bir interface ve bir sınıf içerisindeki yapılandırılması:
public interface Araba{
public void calistir(){}
public void durdur(int hiz){}
}public class AileArabasi implements Araba{
private String model;
public AileArabasi(String yeniModel){
model = yeniModel
}
public void calistir(){
System.out.println(model +” çalışır!”);
}
public void stop(int hiz){
if(hiz < 30){ Even though both Car and Boat interfaces would have the start() method, it wouldn't do anything anyway, so there is no problem in choosing the right one to use in each case. This is the advantage interfaces have over super classes. System.out.println(model + " yavaşça durur!"); } }
Genel bir interface Java’da genellikle LİST ile kullanılır.Bunun başlıca sebebi hem konsepte uygun olması hemde bir çok şekilde uygulanabilirliğidir (ArrayList,LinkedList, vesaire). Interface olmaları gayet anlamlı…
Biz normalde bir list’in ne yaptığını biliyoruz,ve bizde bu şekilde datayı interface üzerine atıyoruz.Listler ile nasıl yapılır derseniz o list tipine göre değişir : node ya da array kullanmanıza göre yani.
Even though both Car and Boat interfaces would have the start() method, it wouldn’t do anything anyway, so there is no problem in choosing the right one to use in each case. This is the advantage interfaces have over super classes.
Bir interface bir sınıfın kendisini kendi içinde uygulamasına/uyarlamasına bağlı olarak
Bir interface, onu uygulayan sınıfların, örneğin Arabalar olarak nitelendirilebilecek yöntemleri sağlar; ancak aynı zamanda, bir Araba sınıfını genişleten her şeyi miras almak üzere sınırlandırılmaları anlamına da gelmez.
Çünkü bir interface sadece bir model ile gelir, bir sınıf tek bir sınıfı genişletmek yerine, ne kadar interface’e ihtiyaç duyuyorsa o kadar interface tanımlayabilir/kullanabilir (implement),
public class YuzerArac implements Araba, Tekne{
public void calistir(){
…
}
}
Örnekte görüldüğü üzere hem Araba hemde Tekne intrefacelerinin calistir() metotları mevcut,
Her iki Araba ve Tekne interfaceleri (arayüzleri) start () metoduna (yöntem) sahip olsa da, her durumda bir işlem yapmaz, bu nedenle her durumda kullanılacak doğru olanı seçerken sorun olmaz. Bu, interfacelerin (arabirim) süper sınıflar üzerinde sahip oldukları avantajdır.
Umarım anlaşılmıştır, keza bence örnek açıklamadan daha anlaşılır oldu ama açıklamaya kalkınca maalesef biraz karmaşık gözüküyor. Kod okur yazarlığı iyi bir şey işte; çünkü bazen ister istemez okuduğumuz bir sürü terim sebebiyle
Even though both Car and Boat interfaces would have the start() method, it wouldn’t do anything anyway, so there is no problem in choosing the right one to use in each case. This is the advantage interfaces have over super classes. anlaşılır olmaktan çıkıyor.Bu da yazılım dünyasının başka bir gerçeği. Ne demek istediğimi anlamak için WYSIWYG ne demek bilmek lazım :D