interface enhancements java 8 java functional interface
Bu eğitici, Java 8 arayüzüne yapılan eklemeleri ve soyut sınıf gibi Java kavramları arasındaki farkları açıklar, anahtar kelimeyi genişletir, vb. Arayüzlerle:
Her şeyi araştırdık Java'daki arayüzler son eğitimimizde. Java'da çoklu arayüzler dahil olmak üzere temel arayüz kavramlarını tanıttık ve ele aldık.
Java 8'den önce, arayüzlerin yalnızca soyut yöntemlere ve statik ve son değişkenlere sahip olmasına izin veriliyordu. Soyut yöntemler varsayılan olarak geneldir ve bir arabirim uygulayan sınıf tarafından geçersiz kılınmaları gerekir.
Dolayısıyla arayüz esas olarak bir sözleşmeydi ve yalnızca sabitler (statik ve nihai) ve soyut yöntemlerle ilgiliydi.
=> Java Yeni Başlayanlar Kılavuzuna Bir Göz Atın.
Ne öğreneceksin:
- Java 8'de Arayüz Değişiklikleri
- Java 8 Fonksiyonel Arayüzler
- Java'da Sınıf Vs Arayüzü
- Java, Vs Uygulamaları Genişletir
- Java'da Arayüz Vs Soyut Sınıfı
- Sonuç
Java 8'de Arayüz Değişiklikleri
Java 8 sürümü, arayüzlerde statik ve varsayılan yöntemlere sahip olmamızı sağlar veya buna izin verir. Bir arayüzde varsayılan yöntemleri kullanarak, geliştiriciler arayüzlere daha fazla yöntem ekleyebilir. Bu şekilde, arayüzü uygulayan sınıfları rahatsız etmez veya değiştirmezler.
Java 8 ayrıca arayüzün statik bir yönteme sahip olmasına izin verir. Statik yöntemler, sınıflarda tanımladığımız yöntemlerle aynıdır. Statik yöntemin, arabirimi uygulayan sınıf tarafından geçersiz kılınamayacağını unutmayın.
Arayüzde statik ve varsayılan yöntemlerin eklenmesi, arayüzlerin sorunsuz bir şekilde değiştirilmesini kolaylaştırdı ve ayrıca arayüzlerin uygulanmasını kolaylaştırdı.
Java 8 ayrıca işlevsel arayüzler içinde 'Lambda İfadeleri' sunar. Ayrıca, Java 8'den itibaren Java'da eklenen daha fazla yerleşik işlevsel arayüz vardır.
Bu eğitimde, Java 8'deki arabirimlere yapılan tüm bu eklemeleri tartışacağız ve ayrıca arabirimlerle soyut sınıflar, anahtar sözcük genişletme gibi çeşitli Java kavramları arasındaki bazı farklılıkları tartışacağız.
Java'da Arayüzde Statik Yöntem
Arayüzler ayrıca tanımları olabilen yöntemlere sahip olabilir. Bunlar arayüzdeki statik yöntemlerdir. Statik yöntemler arabirim içinde tanımlanır ve bu arabirimi uygulayan sınıflar tarafından geçersiz kılınamaz veya değiştirilemezler.
Bu statik yöntemleri doğrudan arayüz adını kullanarak çağırabiliriz.
Aşağıdaki örnek, statik yöntemin kullanımını gösterir.
//interface declaration interface TestInterface { // static method definition static void static_print() { System.out.println('TestInterface::static_print ()'); } // abstract method declaration void nonStaticMethod(String str); } // Interface implementation class TestClass implements TestInterface { // Override interface method @Override public void nonStaticMethod(String str) { System.out.println(str); } } public class Main{ public static void main(String() args) { TestClass classDemo = new TestClass(); // Call static method from interface TestInterface.static_print(); // Call overridden method using class object classDemo.nonStaticMethod('TestClass::nonStaticMethod ()'); } } Çıktı:

Yukarıdaki program bir TestInterface'e sahiptir. 'Statik_baskı' adlı statik bir yöntemi ve ayrıca statik olmayan yöntem adlı statik olmayan bir yöntemi vardır.
TestInterface'i TestClass'a uyguladık ve nonStaticMethod'u geçersiz kıldık. Daha sonra ana yöntemde, TestInterface kullanarak doğrudan static_print yöntemini ve TestClass nesnesini kullanarak nonStaticMethod'u çağırıyoruz.
Arayüz Varsayılan Yöntemi
Daha önce de belirtildiği gibi, Java 8'den önceki arayüzler yalnızca soyut yöntemlere izin veriyordu. Daha sonra bu yöntem uygulamasını ayrı bir sınıfta sağlayacağız. Arayüze yeni bir metot eklememiz gerekirse, uygulama kodunu aynı sınıfta sağlamalıyız.
Dolayısıyla, arayüze bir yöntem ekleyerek değiştirirsek, uygulama sınıfı da değişecektir.
Bu sınırlama, arabirimlerin varsayılan yöntemlere sahip olmasına izin veren Java 8 sürümü ile aşıldı. Varsayılan yöntemler bir bakıma mevcut arayüzlere geriye dönük uyumluluk sağlar ve uygulama sınıfını değiştirmemize gerek yoktur. Varsayılan yöntemler, 'sanal uzantı yöntemi' veya 'savunma yöntemleri' olarak da bilinir.
Varsayılan yöntemler, bildirimde 'varsayılan' anahtar sözcüğü kullanılarak bildirilir. Bildirimin ardından yöntemin tanımı gelir. Arayüzü uygulayan sınıfta mevcut olduğu için varsayılan yöntemi geçersiz kılabiliriz.
Aynı şekilde, onu geçersiz kılmadan doğrudan arayüzden uygulama sınıfı nesnesini kullanarak çağırabiliriz.
interface TestInterface { // abstract method public void cubeNumber(int num); // default method default void print() { System.out.println('TestInterface :: Default method'); } } class TestClass implements TestInterface { // override cubeNumber method public void cubeNumber(int num) { System.out.println('Cube of given number ' + num+ ':' + num*num*num); } } class Main{ public static void main(String args()) { TestClass obj = new TestClass(); obj.cubeNumber(5); // call default method print using class object obj.print(); } } Çıktı:
Windows 10 için sistem izleme araçları

Yukarıdaki Java programı, arayüzdeki varsayılan yöntemi göstermektedir. Ana yöntemde, sınıf nesnesini kullanarak arayüzün varsayılan yöntemini çağırabileceğimize dikkat edin. Bunun nedeni, sınıf arabirimi uyguladığından, varsayılan yöntemin sınıf için de kullanılabilir olmasıdır.
Not: Ayrıca uygulama sınıfında da print () yöntemini geçersiz kılabilirdik. Geçersiz kılınması durumunda, varsayılan yöntemin erişim değiştiricisinin uygulama sınıfında genel olarak değişeceğini unutmayın.
Varsayılan Yöntemler ve Çoklu Kalıtım
Birden fazla arayüz olması durumunda, her arayüzün aynı prototipe sahip varsayılan bir metoda sahip olabileceği bir durum ortaya çıkabilir. Böyle bir durumda, derleyici hangi yöntemi çağıracağını bilmez.
Varsayılan yöntemin tüm arabirimlerde aynı prototipe sahip olduğu bu durum ortaya çıktığında, çözüm, uygulama sınıfındaki yöntemi geçersiz kılmaktır, böylece uygulama sınıfı nesnesi varsayılan yöntemi çağırdığında, derleyici sınıfta uygulanan yöntemi çağırır. .
Aşağıdaki Java programı, varsayılan yöntemin birden çok arayüzle kullanımını göstermektedir.
//Interface_One interface Interface_One{ //defaultMethod default void defaultMethod(){ System.out.println('Interface_One::defaultMethod'); } } //Interface_Two interface Interface_Two{ //defaultMethod default void defaultMethod(){ System.out.println('Interface_Two::defaultMethod'); } } class TestExample implements Interface_One, Interface_Two{ public void disp(String str){ System.out.println('String is: '+str); } //override defaultMethod to take care of the ambiguity public void defaultMethod(){ System.out.println('TestExample::defaultMethod'); } } class Main{ public static void main(String() args) { TestExample obj = new TestExample(); //call the default method obj.defaultMethod(); } }Çıktı:

Yukarıdaki programda, uygulama sınıfında varsayılan yöntemi (her iki arayüzde de aynı prototipe sahip olan) geçersiz kıldık. Bu şekilde, uygulama sınıfının nesnesini kullanarak ana yöntemden varsayılan yöntemi çağırdığımızda, geçersiz kılınan yöntem çağrılır.
Java 8 Fonksiyonel Arayüzler
İşlevsel bir arabirim, yalnızca bir soyut yöntemi olan bir arabirimdir. Herhangi bir sayıda varsayılan ve statik yöntem içerebilir ancak içerdiği soyut yöntem tam olarak birdir. Ek olarak, işlevsel bir arabirim, nesne sınıfı yöntemlerinin bildirimlerine sahip olabilir.
mkv dosyası nasıl oynatılır
İşlevsel Arayüz ' Tek Soyut Yöntem Arayüzü 'Veya' SAM Arayüzü ”. SAM arayüzü, Java'daki yeni bir özelliktir.
Bir Java programında, işlevsel bir arayüzün varlığı, bir @FunctionalInterface ek açıklama. Derleyici bu açıklamayla karşılaştığında, bu açıklamayı izleyen arabirimin işlevsel olduğunu bilir. Dolayısıyla, birden fazla soyut yöntem içeriyorsa, bir hata yanıp söner.
Ek açıklama @FunctionalInterface ancak Java'da zorunlu değildir.
Aşağıdaki program Java'da İşlevsel Arayüzü göstermektedir:
//declare a functional interface @FunctionalInterface //annotation indicates it’s a functional interface interface function_Interface{ void disp_msg(String msg); // abstract method // Object class methods. int hashCode(); String toString(); boolean equals(Object obj); } //implementation of Functional Interface class FunctionalInterfaceExample implements function_Interface{ public void disp_msg(String msg){ System.out.println(msg); } } class Main{ public static void main(String() args) { //create object of implementation class and call method FunctionalInterfaceExample finte = new FunctionalInterfaceExample(); finte.disp_msg('Hello, World!!!'); } } Çıktı:

Yukarıdaki programdaki işlevsel arayüz tek bir soyut yönteme sahiptir ve ayrıca hashCode, toString ve equals gibi bir nesne sınıfı yöntem bildirimine sahiptir. Bu arayüzü uygulayan sınıfta, soyut yöntem geçersiz kılınır. Ana yöntemde, uygulama sınıfının bir nesnesini oluşturuyoruz ve yöntemi kullanıyoruz.
Runnable ve Comparable gibi arabirimler, Java'da sağlanan işlevsel arabirimlerin örnekleridir. Java 8, fonksiyonel arayüz nesnesine lambda ifadeleri atamamıza izin verir.
Aşağıdaki örnek program bunu göstermektedir.
class Main{ public static void main(String args()) { // use lambda expression to create the object new Thread(()-> {System.out.println('New thread created with functional interface');}).start(); } } Çıktı:

Java 8 ayrıca java.util.function paketinde birçok yerleşik işlevsel arabirim sağlar.
Bu yerleşik arayüzler aşağıda açıklanmıştır:
# 1) Dayanak
Bu, Java'da tek bir soyut yöntem testine sahip işlevsel bir arayüzdür. 'Test' yöntemi, belirtilen bağımsız değişkeni test ettikten sonra boole değerini döndürür.
Aşağıda, Predicate arayüzünün test yönteminin prototipi verilmiştir.
public interface Predicate { public boolean test(T t); }# 2) BinaryOperator
BinaryOperator arabirimi, iki bağımsız değişkeni kabul eden ve bağımsız değişkenlerle aynı türde bir sonuç değeri döndüren soyut bir yöntem 'uygula' sağlar.
Kabul yönteminin prototipi şudur:
public interface BinaryOperator { public T apply (T x, T y); }# 3) İşlev
İşlev arabirimi, 'uygula' adlı soyut bir yönteme de sahip işlevsel bir arabirimdir. Ancak bu uygulama yöntemi, T türünde tek bir bağımsız değişken alır ve R türünde bir değer döndürür.
Uygulama yönteminin prototipi aşağıdaki gibidir:
public interface Function { public R apply(T t); }Aşağıdaki Java programı, yukarıdaki yerleşik İşlevsel Arayüz Predicate'i göstermektedir.
import java.util.*; import java.util.function.Predicate; class Main { public static void main(String args()) { // create a list of strings List names = Arrays.asList('Karen','Mia','Sydney','Lacey','Megan'); // declare string type predicate and use lambda expression to create object Predicate p = (s)->s.startsWith('M'); System.out.println('Names starting with M:'); // Iterate through the list for (String st:names) { // test each entry with predicate if (p.test(st)) System.out.println(st); } } } Çıktı:

Yukarıdaki programda görebileceğimiz gibi, bir dizi dizgimiz var. Predicate işlevsel arayüzünü kullanarak, dizedeki öğenin M ile başlayıp başlamadığını ve varsa, adı yazdırıp yazdırmadığını test ederiz.
Java'da Sınıf Vs Arayüzü
Benzer sözdizimine sahip oldukları için sınıf ve arayüz benzer olsa da, bu iki varlık benzerliklerden daha fazla farklılığa sahiptir.
Java'da sınıf ve arayüz arasındaki bazı farklılıkları listeleyelim.
| Sınıf | Arayüz |
|---|---|
| Bir sınıftan nesneler oluşturabilir ve somutlaştırabiliriz. | Bir arabirim somutlaştırılamaz. |
| Sınıf oluşturmak için anahtar kelime kullanılır. | Arayüz, 'arayüz' anahtar kelimesi kullanılarak oluşturulur. |
| Sınıflar, Java'da çoklu kalıtımı desteklemez. | Arayüzler, Java'da çoklu kalıtımı destekler. |
| Sınıf, yapıcıları içerir. | Arayüzler kurucu içermez. |
| Sınıf soyut yöntemler içeremez. | Arayüzler yalnızca soyut yöntemler içerir. |
| Sınıf, varsayılan, genel, özel veya korumalı değişkenlere ve yöntemlere sahip olabilir. | Arayüz varsayılan olarak yalnızca genel değişkenlere ve yöntemlere sahiptir. |
| Erişim dışı değiştiricileri sınıfın değişkenleriyle ilişkilendirmek zorunlu değildir. | Arayüzlerin statik veya nihai değişkenleri olabilir. |
| Bir sınıftan başka bir sınıfı miras alabiliriz. | Arayüzden bir sınıfı miras alamayız. |
| Sınıf, 'extends' anahtar kelimesi kullanılarak miras alınabilir. | Arayüz, 'uygular' anahtar kelimesi kullanılarak başka bir sınıf tarafından uygulanabilir. 'Extends' anahtar kelimesi kullanılarak başka bir arayüz tarafından miras alınabilir. |
Java, Vs Uygulamaları Genişletir
| 'Genişler' | 'Uygular' |
|---|---|
| Arabirimler yalnızca statik ve son erişilemeyen değiştiricileri destekler. | Abstract, statik, son, statik olmayan ve nihai olmayan gibi tüm erişim dışı değiştiricileri destekler. |
| Bir sınıf, başka bir sınıftan miras almak için 'extends' anahtar kelimesini kullanır. | 'Uygular' anahtar sözcüğü, bir sınıf tarafından bir arabirimi uygulamak için kullanılır. |
| Başka bir sınıfı miras alan bir sınıf, ana sınıfın tüm yöntemlerini geçersiz kılabilir veya geçersiz kılmayabilir. | Arabirimi uygulayan sınıf, arabirimin tüm soyut yöntemlerini geçersiz kılmalıdır. |
| Extends anahtar sözcüğünü kullanarak bir seferde yalnızca bir sınıfı genişletebiliriz. | 'Uygulamalar' anahtar kelimesini kullanarak birden çok arayüz uygulayabiliriz. |
| Bir arayüz, 'extends' anahtar kelimesini kullanarak başka bir arayüzü genişletebilir. | Bir arayüz, anahtar kelimeleri 'uygular' kullanan başka bir arayüzü uygulayamaz. |
Java'da Soyut Sınıf Uygulanabilir Arayüz
Evet, soyut bir sınıf 'uygular' anahtar sözcüğünü kullanarak bir arayüz uygulayabilir. Soyut sınıfın tüm arayüz soyut yöntemlerini uygulamasına gerek yoktur. Ancak genel olarak, tüm soyut yöntemlerle bir arayüze, ardından bu arayüzü uygulayan soyut bir sınıfa ve ardından somut sınıflara sahip olmak iyi bir tasarım uygulamasıdır.
Aşağıda Java'da böyle bir uygulamaya bir örnek verilmiştir.

Burada java.util.List bir arayüzdür. Bu arayüz, java.util.AbstractList tarafından uygulanmaktadır. Daha sonra bu AbstractList sınıfı, LinkedList ve ArrayList gibi iki somut sınıf tarafından genişletilir.
LinkedList ve ArrayList sınıfları List arayüzünü doğrudan uygulamış olsaydı, bu durumda List arayüzünün tüm soyut yöntemlerini uygulamaları gerekirdi.
Ancak bu durumda AbstractList sınıfı, List arabiriminin yöntemlerini uygular ve bunları LinkedList ve ArrayList'e aktarır. Yani burada, arayüzden tür bildirme avantajını ve ortak davranışı uygulamanın soyut sınıf esnekliğini elde ediyoruz.
Java'da Soyut Sınıf Ve Arayüz Ne Zaman Kullanılmalı
Bu soyut sınıftan genişletilecek olan çocuk sınıfların varsayılan veya ortak davranışını tanımlamak için çoğunlukla soyut bir sınıf kullanıyoruz. Arayüz, bir uygulamada etkileşimde bulunan iki sistem arasındaki bir sözleşmeyi tanımlamak için kullanılır.
Bazı özel durumlar, kullanılacak arayüzler ve yalnızca soyut sınıflar kullanılarak çözülebilen belirli sorunlar için idealdir. Bu bölümde, arayüzü ne zaman kullanabileceğimizi ve soyut sınıfları ne zaman kullanabileceğimizi tartışacağız.
Arayüz ne zaman kullanılmalı:
- Arayüzler esas olarak küçük ve öz bir işlevselliğe sahip olduğumuzda kullanılır.
- API'leri uygularken ve bir süre değişmeyeceklerini bildiğimizde, o zaman arayüzlere geçiyoruz.
- Arayüzler, çoklu kalıtım uygulamamıza izin verir. Bu nedenle, uygulamamızda birden fazla kalıtım uygulamamız gerektiğinde, arayüzlere yöneliyoruz.
- Çok çeşitli nesnelerimiz olduğunda, yine arayüzler daha iyi bir seçimdir.
- Ayrıca birçok ilgisiz sınıfa ortak bir işlevsellik sağlamamız gerektiğinde, yine de arayüzler kullanılır.
Soyut Sınıf ne zaman kullanılır:
- Soyut sınıflar, çoğunlukla uygulamamızda kalıtım kullanmamız gerektiğinde kullanılır.
- Arayüzler genel yöntemler ve değişkenlerle ilgilendiğinden, programımızda genel olmayan erişim değiştiricileri kullanmak istediğimizde, soyut sınıfları kullanırız.
- Yeni yöntemlerin eklenmesi gerekiyorsa, bunu arayüzde yapmaktansa soyut bir sınıfta yapmak daha iyidir. Çünkü arayüze yeni bir metot eklersek, arayüzler sadece metot prototiplerine sahip olduğundan tüm uygulama değişir ve arayüzü kullanan sınıf uygulaması uygulama sağlayacaktır.
- Geliştirilen bileşenlerin farklı versiyonlarını istiyorsak, soyut sınıfa gidiyoruz. Soyut sınıfları daha kolay değiştirebiliriz. Ancak arayüzler değiştirilemez. Yeni bir versiyon istiyorsak, arayüzün tamamını yeniden yazmamız gerekiyor.
- Tüm bileşenler için ortak bir uygulama sağlamak istediğimizde, soyut sınıf en iyi seçimdir.
Java'da Arayüz Vs Soyut Sınıfı
Aşağıda Java'daki Arayüzler ve Soyut sınıflar arasındaki bazı farklar verilmiştir.
| Arayüz | Soyut sınıf |
|---|---|
| Arayüz, 'arayüz' anahtar kelimesi kullanılarak bildirilir. | Soyut bir sınıf, 'soyut' anahtar kelimesi kullanılarak bildirilir. |
| Arayüz, 'uygular' anahtar kelimesi kullanılarak uygulanabilir. | Özet, 'extends' anahtar sözcüğü kullanılarak miras alınabilir. |
| Bir arabirim bir sınıfı genişletemez veya bir arabirim uygulayamaz, yalnızca başka bir arabirimi genişletebilir. | Soyut bir sınıf, bir sınıfı genişletebilir veya birden çok arabirim uygulayabilir. |
| Arayüz üyeleri yalnızca herkese açık olabilir. | Soyut sınıf üyeleri genel, özel veya korumalı olabilir. |
| Bir uygulama sağlamak için bir arayüz kullanılamaz. Yalnızca bir beyan olarak kullanılabilir. | Arayüzü uygulamak için soyut bir sınıf kullanılabilir. |
| Arayüzler kullanılarak çoklu kalıtım elde edilebilir. | Soyut sınıf, çoklu mirası desteklemez. |
| Arayüzlerin yalnızca soyut yöntemleri olabilir. Java 8'den statik ve varsayılan yöntemlere sahip olabilir. | Soyut bir sınıfın soyut veya soyut olmayan bir yöntemi olabilir. |
Java'da Devralma Sıralaması
Java'daki veri türleri konusundaki tartışmamızda enum veri türlerini tartıştık. Tüm numaralandırmalar java.lang.Enum sınıfından genişletilir. Bu sınıf java.lang.Enum soyut bir sınıftır.
Ayrıca, Java'daki tüm enum sınıfları varsayılan olarak 'son' dur. Bu nedenle, herhangi bir enum sınıfından bir sınıfı devralma girişimi bir derleyici hatasıyla sonuçlanır.
Java birden fazla kalıtıma izin vermediğinden, enum sınıfı zaten java.lang.Enum'dan miras aldığından, başka herhangi bir sınıftan enum sınıfını miras alamayız. Ancak, enum sınıfları Java'da arabirimler uygulayabilir ve buna Java'da Enum kalıtımı denir.
Aşağıda Java'da Enum Devralma örneği verilmiştir.
//WeekDays interface declaration interface WeekDays { public void displaydays(); } //enum class implementing WeekDays interface enum Days implements WeekDays { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY,FRIDAY, SATURDAY; public void displaydays() { //Override displaydays method System.out.println('The day of the week: ' + this); } } class Main { public static void main(String() args) { Days.MONDAY.displaydays(); //access enum value } }Çıktı:

Burada, soyut bir prototip prototipi displaydays () olan bir WeekDays arayüzüne sahibiz. Sonra WeekDays arabirimini uygulayan bir Days enum sınıfı tanımlarız. Burada PAZAR ile CUMARTESİ arasında enum değerleri tanımlıyoruz ve ayrıca displaydays yöntemini geçersiz kılıyoruz.
Son olarak, ana yöntemde, enum değerine erişir ve görüntüleriz.
Sıkça Sorulan Sorular
S # 1) Arayüzde bir yöntem gövdesi verirseniz ne olur?
Cevap: Java 8'den önceki Java sürümleri için, arayüzde yöntemin gövdesine izin verilmez. Ancak Java 8'den bu yana, arayüz içinde varsayılan veya statik yöntemler tanımlayabiliriz.
S # 2) Bir arayüzde Java 8'de değişkenler olabilir mi?
Cevap: Java 8'de durağan ve son değiştiricileri kullanarak sabit değişkenlere sahip olabiliriz. Ancak Java arayüzlerinde örnek değişkenlere sahip olamayız. Bir arabirimde örnek değişkenlerini bildirmeye yönelik herhangi bir girişim, bir derleyici hatasıyla sonuçlanır.
S # 3) Java 8'deki arayüzlerdeki gelişmeler nelerdir?
Cevap: Java 8'de arayüzler için en önemli gelişme, arayüzlerde statik ve varsayılan yöntemlere izin verilmesidir. Statik veya öntanımlı olarak ilan edilmiş metotlara sahip olabilir ve bunları arayüz içerisinde tanımlayabiliriz.
S # 4) Java arayüzünde varsayılan yöntemi geçersiz kılabilir miyiz?
Cevap: Hayır. Arayüzde varsayılan yöntemi geçersiz kılmak zorunlu değildir. Bunun nedeni, bir sınıfta bir arabirim uyguladığımızda, sınıfın varsayılan yöntemine uygulama sınıfı tarafından erişilebilir olmasıdır. Dolayısıyla, uygulama sınıfının nesnesini kullanarak arayüzün varsayılan yöntemine erişebiliriz.
S # 5) Arayüzlerin Java'da alanları olabilir mi?
oracle formları ve raporları mülakat soruları
Cevap: Evet, Java'daki arayüzlerde alanlarımız veya değişkenlerimiz olabilir, ancak varsayılan olarak tüm bu alanlar statik, nihai ve geneldir.
Sonuç
Bu eğitimde, Java 8'de arayüzlerde yapılan değişiklikleri tartıştık. Java 8, arayüzlerde statik ve varsayılan yöntemleri tanıttı. Daha önce arayüzde yalnızca soyut yöntemlere sahip olabiliyorduk. Ancak Java 8'den itibaren Java'da varsayılan ve statik yöntemler tanımlayabiliriz.
Ayrıca Java 8, Java'daki işlevsel arayüzlerle lambda ifadelerinin kullanımına izin verir. Daha sonra soyut sınıfları ve arayüzleri de tartıştık ve her birinin Java'da ne zaman kullanılacağını gördük. Java'daki enum mirasını da gördük.
Ayrıca, genişletmeler ve uygulamalar, sınıf ve arayüz, soyut sınıf ve arayüz vb. Arasındaki bazı farklılıkları da tartıştık.
=> TÜM Java Öğreticilerini Buradan Kontrol Edin.
Önerilen Kaynaklar
- Java Arayüzü ve Örneklerle Soyut Sınıf Eğitimi
- Java'da Karşılaştırılabilir ve Karşılaştırıcı Arayüzler
- Java'da ListIterator Arayüzü Örneklerle
- Java'da Arayüzü Ayarlayın: Örneklerle Java Seti Eğitimi
- Java'da Marker Arayüzü: Serileştirilebilir ve Klonlanabilir
- Java String length () Yöntem Örneklerle
- Java Dağıtımı: Java JAR Dosyasının Oluşturulması ve Yürütülmesi
- Java toString Yöntemi Nasıl Kullanılır?