Rumah > Java > javaTutorial > Kaedah Lalai Java

Kaedah Lalai Java

PHPz
Lepaskan: 2024-08-30 16:15:42
asal
879 orang telah melayarinya

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. . .!");
}}
Salin selepas log masuk

Bagaimanakah Kaedah Lalai berfungsi dalam Java?

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 . . .") ;
}
}
Salin selepas log masuk

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 . . .") ;} }
Salin selepas log masuk

2. Menggunakan super, panggil kaedah lalai

public class dogs implements livingthings,animals
{
default void sound()
{          . . .
livingthings.super.print("dogs bark . . .") ; } }
Salin selepas log masuk

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.

  • Kaedah yang ditindih dalam kelas dipadankan dan dipanggil.
  • Jika kaedah dengan kaedah yang sama disediakan, kaedah yang paling sesuai akan dipilih. Katakan terdapat dua antara muka, A dan B hadir untuk kelas tertentu. Jika A melanjutkan B, maka A adalah yang paling khusus di sini, dan kaedah lalai akan dipilih daripada A. Jika A dan b adalah antara muka bebas, situasi konflik yang teruk akan berlaku dan aduan akan dibangkitkan oleh pengkompil bahawa ia adalah tidak dapat memilih. Dalam keadaan ini, pengguna perlu membantu pengkompil dengan menawarkan butiran tambahan dari mana A atau B kaedah lalai perlu dipilih. cth.
A.super.demo() ;
Salin selepas log masuk

atau

B.super.demo() ;
Salin selepas log masuk

Perbezaan Antara Kaedah Biasa dan Kaedah Lalai

Sekarang, mari kita lihat beberapa perbezaan antara kaedah biasa dan kaedah lalai

  • Kaedah lalai pergi bersama-sama dengan pengubah suai lalai, tidak seperti kaedah biasa.
  • Argumen antara muka tidak mempunyai sebarang keadaan tertentu untuk kaedah lalai.
  • Kaedah biasa boleh menggunakan serta mengubah argumen kaedah dan medan kelas.
  • Kefungsian baharu boleh ditambah pada antara muka sedia ada dan bukannya melanggar pelaksanaan sebelumnya bagi antara muka tertentu itu.

Untuk memanjangkan antara muka yang terdiri daripada kaedah lalai, perkara berikut boleh dilakukan.

  • Kaedah lalai tidak akan ditindih dan ia akan diwarisi.
  • Kaedah lalai akan ditindih, yang serupa dengan kaedah yang ditindih dalam subkelas.
  • Kaedah lalai harus diisytiharkan semula sebagai abstrak, yang memaksa subkelas untuk ditindih.

Contoh untuk Melaksanakan Kaedah Lalai Java

Berikut ialah contoh program yang dinyatakan:

Contoh #1

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 . . .!");
}
}
Salin selepas log masuk

Output:

Kaedah Lalai Java

Penjelasan: Dalam atur cara ini, dua antara muka, Haiwan dan Karnivor, mempunyai kaedah lalai yang sama print(), dan ia dipanggil menggunakan super.

Contoh #2

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");
}
}
Salin selepas log masuk

Output:

Kaedah Lalai Java

Penjelasan: Dalam atur cara ini, antara muka Sampleinterface hadir, dan ia mempunyai kaedah lalai sammethod(), dan ia dipanggil.

Kesimpulan

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!

Label berkaitan:
sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan