Java programlama alanında sınıf sözleşmelerinin belirlenmesi ve kod tutarlılığının garanti edilmesi söz konusu olduğunda, Java'da arayüzler çok önemlidir. Uygulayıcı sınıfın uygulaması gereken bir dizi yöntemin ana hatlarını çizerek bir sınıfın planı olarak hizmet eder. Kodlarının soyutlanması, modülerliği ve bakımı, geliştiriciler tarafından arayüzler kullanılarak sağlanabilir. Java'da çeşitli arayüz türleri bu bölümde tartışılacaktır.
İşaretleyici Arayüzleri
Genellikle etiket arayüzleri olarak adlandırılan işaretleyici arayüzleri, herhangi bir yöntem bildirilmemiş arayüzlerdir. Basitçe söylemek gerekirse, işaretleyici arayüzünü uygulayan bir sınıfın belirli özelliklere veya niteliklere sahip olduğunu işaret ederek işaretleyici görevi görürler. Java çalışma zamanı ortamı ve diğer araçlar, ekstra işlevsellik veya veri sağlamak için bu API'leri kullanır. Serileştirilebilir, Klonlanabilir ve Uzaktan, Java'daki işaretleyici arayüzlerinin bazı örnekleridir.
Fonksiyonel Arayüzler
Lambda ifadeleri ve işlevsel programlamadaki iyileştirmelerin bir parçası olarak Java 8'e işlevsel arayüzler eklendi. Tam olarak tek bir soyut yönteme sahip bir arayüzün işlevsel olduğu söylenir. Ayrıca varsayılan ve statik yöntemler de mümkündür. Lambda ifadeleri ve yöntem referansları gibi birçok Java işlevsel programlama özelliği, işlevsel arayüzlerden yararlanır. Yüklem, Tüketici, İşlev ve Tedarikçi, java.util.function paketinin sunduğu yerleşik işlevsel arayüzlerden yalnızca birkaçıdır.
Tek Soyut Yöntem (SAM) Arayüzleri
Java 8'den önce, SAM arayüzleri adı verilen belirli türde işlevsel arayüzler mevcuttu. Bu arayüzler herhangi bir sayıda varsayılan veya statik yönteme sahip olabilir, ancak yalnızca bir soyut yöntem olabilir. Runnable, Comparator ve MouseListener, SAM arayüzü örnekleri içeren Java 8 öncesi birkaç API'dir. Java 8'de fonksiyonel arayüzlerin kullanıma sunulmasıyla birlikte SAM arayüzleri lambda ifadeleriyle birlikte kullanılabilir ve fonksiyonel arayüzler olarak kabul edilebilir.
tarihe dize
Normal Arayüzler
Java'daki en yaygın arayüz türü normal arayüzlerdir. Arayüzü uygulayan sınıfların uygulaması gereken bir veya daha fazla soyut yönteme sahiptirler. Java 8'den itibaren normal arayüzler ek olarak varsayılan ve statik yöntemler içerebilir. Normal arayüzler, geliştiriciler tarafından sınıfların uyması gereken kuralları veya gereksinimleri belirtmek için kullanılır. Tamamı java.util paketinde bulunan Liste, Küme ve Harita, tipik Java arayüzlerinin örnekleridir.
Çoklu Kalıtım Arayüzleri
Java, sınıfların birden fazla arabirim uygulamasına izin verir ancak çoklu sınıf kalıtımını desteklemez. Aynı anda çok sayıda sözleşmeyi tanımlamak veya davranışı devralmak için bir sınıf tarafından uygulanan arayüzler, çoklu miras arayüzleri olarak bilinir. Bir sınıf, çeşitli arayüzler uygulayarak her arayüzün ana hatlarıyla belirtilen işlevselliği sunabilir. Bu işlevselliğin yardımıyla geliştiriciler kodu yeniden kullanabilir ve fikirlerinin uyarlanabilirliğini artırabilir.
Junit test senaryoları
Aşağıda, Java'daki her bir arayüz türü için ilgili çıktılarla birlikte kod örnekleri verilmiştir:
İşaretleyici Arayüzleri
MarkerInterfaceExample.java
import java.io.Serializable; // Marker Interface interface MyMarkerInterface extends Serializable { } public class MarkerInterfaceExample { public static void main(String[] args) { MyMarkerInterface obj = new MyMarkerInterface() { }; System.out.println(obj instanceof Serializable); // true } }
Çıktı:
true
Fonksiyonel Arayüzler
FunctionalInterfaceExample.java
import java.util.function.Predicate; public class FunctionalInterfaceExample { public static void main(String[] args) { Predicate isLengthGreaterThan5 = str -> str.length() > 5; System.out.println(isLengthGreaterThan5.test('Hello')); // false System.out.println(isLengthGreaterThan5.test('OpenAI')); // true } }
Çıktı:
false true
Tek Soyut Yöntem (SAM) Arayüzleri:
SAMInterfaceExample.java
interface MySAMInterface { void performAction(); } public class SAMInterfaceExample { public static void main(String[] args) { MySAMInterface obj = () -> System.out.println('Performing action'); obj.performAction(); // Performing action } }
Çıktı:
sayfa aşağı klavye
Performing action
Normal Arayüzler
NormalArayüzÖrneği.java
import java.util.List; import java.util.ArrayList; interface MyInterface { void printMessage(); } class MyClass implements MyInterface { @Override public void printMessage() { System.out.println('Hello, World!'); } } public class NormalInterfaceExample { public static void main(String[] args) { MyInterface obj = new MyClass(); obj.printMessage(); // Hello, World! } }
Çıktı:
salman khan khan'ın yaşı
Hello, World!
Çoklu Kalıtım Arayüzleri:
MultipleInheritanceInterfaceExample.java
interface Interface1 { void method1(); } interface Interface2 { void method2(); } class MyClass implements Interface1, Interface2 { @Override public void method1() { System.out.println('Method 1'); } @Override public void method2() { System.out.println('Method 2'); } } public class MultipleInheritanceInterfaceExample { public static void main(String[] args) { MyClass obj = new MyClass(); obj.method1(); // Method 1 obj.method2(); // Method 2 } }
Çıktı:
Method 1 Method 2
Bu örnekler Java'daki farklı arayüz türlerinin kullanımını ve davranışını göstermektedir. İlgili çıktıyı gözlemlemek için her kod parçacığını ayrı ayrı çalıştırabilirsiniz.
Sonuç olarak, Java arayüzleri sözleşmeleri belirlemek ve kod modülerliğine ulaşmak için güçlü bir yöntem sunar. Arayüzler, ister belirli özellikleri belirten işaretleyici arayüzler, ister işlevsel programlamayı mümkün kılan işlevsel arayüzler, sözleşmeleri tanımlayan düzenli arayüzler veya çeşitli sözleşmeleri birleştiren çoklu kalıtım arayüzleri olsun, Java geliştirme için gereklidir. Java geliştiricileri, çeşitli arayüz türlerinin ve işlevlerinin farkında olduklarında anlaşılır, genişletilebilir kod oluşturmak için daha iyi donanıma sahip olurlar.