"Merhaba, Amigo! Bugün bazı keşifler yapacaksın. Bugünün konusu - davul çalma lütfen - arayüzler. "
"Evet. O kadar harika bir gün ki banyo yapmak için eve gidiyorum."
" Arayüz , Soyutlama ve Polimorfizm'in çocuğudur. Arayüz, tüm yöntemlerin soyut olduğu soyut bir sınıfa çok benzer. Bir sınıfla aynı şekilde, ancak anahtar kelimeyle bildirilir. İşte bazı örnekler: interface
"
kod | Açıklama ve gerçekler |
---|---|
|
1) kelimesi yerine class yazarız interface .
2) Yalnızca soyut yöntemler içerir (özet kelimesini eklemeye gerek yoktur). 3) Aslında, arabirimlerdeki tüm yöntemler herkese açıktır. |
|
Bir arabirim yalnızca diğer arabirimleri devralabilir.
Birçok üst arayüze sahip olabilirsiniz. |
|
Bir sınıf, birkaç arabirimi (ve yalnızca bir sınıfı) miras alabilir. Bu kalıtımı göstermek için anahtar kelimeyi kullanırız implements .
Sınıf Başka bir deyişle, |
"İlginç. Peki arayüzlere neden ihtiyacımız var? Ne zaman kullanılıyorlar?"
"Arayüzlerin sınıflara göre iki güçlü avantajı vardır:"
1) Yöntem uygulamalarından "yöntem tanımlarının" ayrılması.
Daha önce size, diğer sınıfların sizin sınıfınızın metotlarını çağırmasına izin vermek istiyorsanız, o zaman onları olarak işaretlemeniz gerektiğinipublic
söylemiştim . Belirli yöntemlerin yalnızca kendi sınıfınızdan çağrılmasını istiyorsanız, o zaman işaretlenmeleri gerekir private
. Başka bir deyişle, sınıfın yöntemlerini iki kategoriye ayırıyoruz: «herkes için» ve «sadece benim için».
Bu ayrımı daha da güçlendirmek için arayüzleri kullanabiliriz. İkinci bir "sadece benim için" dersini miras alacak özel bir "herkes için sınıf" oluşturacağız. Bu yaklaşık olarak şuna benzer:
class Student
{
private String name;
public Student(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
}
private void setName(String name)
{
this.name = name;
}
interface Student
{
public String getName();
}
class StudentImpl implements Student
{
private String name;
public StudentImpl(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
}
private void setName(String name)
{
this.name = name;
}
}
public static void main(String[] args)
{
Student student =
new Student("Alibaba");
System.out.println(student.getName());
}
public static void main(String[] args)
{
Student student =
new StudentImpl("Ali");
System.out.println(student.getName());
}
Sınıfımızı iki parçaya ayırdık: bir arayüz ve arayüzü uygulayan bir sınıf.
"Peki avantajı nedir?"
"Aynı arabirim, farklı sınıflar tarafından uygulanabilir (miras alabilir). Ve her sınıfın kendi davranışı olabilir. Tıpkı ArrayList ve LinkedList gibi , List arabiriminin iki farklı uygulamasıdır. "
Böylece, sadece farklı uygulamaları değil, aynı zamanda uygulamaları içeren sınıfları da saklıyoruz (arayüzleri kodun her yerinde kullanabiliriz). Bu, program çalışırken bazı nesneleri diğer nesnelerle çok esnek bir şekilde değiştirmemize, bir nesnenin davranışını onu kullanan sınıfların bilgisi olmadan değiştirmemize olanak tanır.
Polimorfizm ile birlikte bu çok güçlü bir tekniktir. Şu anda, bunu neden yapmamız gerektiği açık olmaktan çok uzak. Arayüzlerin hayatınızı ne kadar büyük ölçüde kolaylaştırabileceğini anlamak için önce onlarca hatta yüzlerce sınıftan oluşan programlarla karşılaşmalısınız.
2) Çoklu kalıtım.
Java'da her sınıfın yalnızca bir ebeveyn sınıfı olabilir. Diğer programlama dillerinde, sınıflar genellikle birkaç üst sınıfa sahip olabilir. Bu çok uygundur, ancak aynı zamanda pek çok sorun yaratır.
Java bir uzlaşma sunar: birden çok sınıfı miras alamazsınız, ancak birden çok arabirim uygulayabilirsiniz. Bir arayüzün birkaç ana arayüzü olabilir. Bir sınıf, birden çok arabirim uygulayabilir ve yalnızca bir üst sınıfı miras alabilir.
GO TO FULL VERSION