Dalam Java 8, konsep baharu yang dinamakan kaedah lalai diperkenalkan untuk melaksanakan keserasian ke belakang yang mengawal ungkapan lambda oleh antara muka lama. Selain itu, antara muka dibenarkan mempunyai fungsi dengan pelaksanaan tanpa menyebabkan sebarang masalah kepada kelas yang antara muka akan dilaksanakan. Sebelum pengenalan Java 8, hanya kaedah abstrak dibenarkan oleh antara muka. Selain itu, fungsi terpaksa ditawarkan dalam kelas yang berbeza. Dalam bahagian berikut, sintaks, cara kerja dan contoh kaedah lalai akan diterangkan.
Mulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Sintaks
Di bawah ialah sintaks kaedah lalai.
public interface animal { default void sound() { System.out.println("This is a sample default method. . .!"); }}
Seperti yang kita ketahui, antara muka seperti Senarai dan koleksi tidak mempunyai kaedah untukSetiap. Jika ia ditambah, pelaksanaan rangka kerja koleksi akan rosak. Memandangkan kaedah lalai diperkenalkan dalam Java 8, pelaksanaan lalai boleh dilakukan untuk kaedah forEach. Di samping itu, kelas yang melaksanakan 2 antara muka dengan fungsi lalai yang sama boleh dilakukan. Mari kita lihat bagaimana kekaburan kod diselesaikan.
public interface livingthings { default void sound() { . . . System.out.println("Living things too make noise . . .") ; } } public interface animals { default void sound() { . . . System.out.println("animals too make noise . . .") ; } }
Terdapat dua penyelesaian untuk kekaburan ini.
1. Untuk mengatasi pelaksanaan kaedah lalai, cipta kaedah anda sendiri.
public class dogs implements livingthings,animals { default void sound() { . . . System.out.println("dogs bark . . .") ;} }
2. Menggunakan super, panggil kaedah lalai
public class dogs implements livingthings,animals { default void sound() { . . . livingthings.super.print("dogs bark . . .") ; } }
Di Java, biasanya n antara muka boleh dilaksanakan oleh kelas. Selain itu, antara muka boleh dilanjutkan dengan antara muka lain. Katakan terdapat dua antara muka untuk kelas dan terdapat kaedah lalai yang dilaksanakan; kelas tertentu mungkin keliru dalam memilih kaedah mana yang perlu dipertimbangkan untuk membuat panggilan. Untuk menyelesaikan konflik ini, perkara berikut boleh dilakukan.
A.super.demo() ;
atau
B.super.demo() ;
Sekarang, mari kita lihat beberapa perbezaan antara kaedah biasa dan kaedah lalai
Untuk memanjangkan antara muka yang terdiri daripada kaedah lalai, perkara berikut boleh dilakukan.
Berikut ialah contoh program yang dinyatakan:
Atur cara Java untuk melaksanakan kaedah lalai
Kod:
//Java program to implement default method public class DefExample { //main method public static void main(String args[]) { //create an object for the interface animal Animals obj = new Dog(); //call the print method obj.print( ); } } //create an interface animal interface Animals { //default method default void print( ) { System.out.println("I have four legs. . . ! !"); } static void sound() { System.out.println("I used to bark alot!!!") ; } } //create an interface <u>carnivores</u> interface Carnivores { //default method default void print( ) { System.out.println("I eat non veg. . .! !") ; } } //class that implements the other two interfaces class Dog implements Animals, Carnivores { public void print( ) { //call the print method of Animals using super Animals.super.print( ) ; //call the print method of Carnivores using super Carnivores.super.print( ); //call the sound method of Animals Animals.sound(); System.out.println("I am a Dog . . .!"); } }
Output:
Penjelasan: Dalam atur cara ini, dua antara muka, Haiwan dan Karnivor, mempunyai kaedah lalai yang sama print(), dan ia dipanggil menggunakan super.
Atur cara Java untuk melaksanakan kaedah lalai
Kod:
//Java program to implement default method interface Sampleinterface{ // Since this is declared as a default method, this has to be implemented in the implementation classes default void sammethod(){ System.out.println("a default method which is newly added to the program"); } // existing public as well as abstract methods has to be implemented in the implementation classes void oldmethod(String s); } public class DefExample implements Sampleinterface{ // abstract method implementation public void oldmethod(String s){ System.out.println("The string given is: "+ s); } public static void main(String[] args) { DefExample obj = new DefExample(); //call the default method obj.sammethod(); //call the abstract method obj.oldmethod("I am the old method in the program"); } }
Output:
Penjelasan: Dalam atur cara ini, antara muka Sampleinterface hadir, dan ia mempunyai kaedah lalai sammethod(), dan ia dipanggil.
Dalam Java 8, konsep baharu yang dinamakan kaedah lalai ditawarkan untuk melaksanakan keserasian ke belakang di mana antara muka lama mengawal ekspresi lambda. Selain itu, hujah antara muka tidak mempunyai sebarang keadaan khusus untuk kaedah lalai. Dalam artikel ini, sintaks, cara kerja dan contoh kaedah lalai diterangkan secara terperinci.
Atas ialah kandungan terperinci Kaedah Lalai Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!