Rumah >Java >javaTutorial >Perbezaan antara pengikatan awal dan pengikatan lewat di Jawa

Perbezaan antara pengikatan awal dan pengikatan lewat di Jawa

WBOY
WBOYke hadapan
2023-09-14 08:57:151115semak imbas

Perbezaan antara pengikatan awal dan pengikatan lewat di Jawa

Dalam pengaturcaraan berorientasikan objek, pegawai merujuk kepada kaedah yang menghubungkan panggilan strategi kepada pelaksanaannya. Java ialah bahasa pengaturcaraan berorientasikan objek yang menyokong kuasa awal dan kuasa lewat, masing-masing dikenali sebagai kuasa tidak aktif dan kuasa aktif. Kedua-dua bentuk pengikatan mempunyai kelebihan dan aplikasi. Dalam artikel ini kami akan memperkenalkan sintaks, penjelasan dan perbezaan antara pengikatan awal dan pengikatan lewat di Jawa.

tatabahasa

Sintaks pengikatan awal dalam Java adalah seperti berikut.

<ClassName> <objectName> = new <ClassName>();

Sintaks pengikatan lewat dalam Java adalah seperti berikut.

<ClassName> <objectName> = new <DerivedClassName>();

Penjelasan tatabahasa

Jenis kelas ditentukan pada masa penyusunan dengan pengikatan awal, dan pelaksanaan kaedah dipilih berdasarkan jenis objek yang ditentukan. Ini bermakna pengkompil mengetahui kelas khusus objek dan boleh mengikat panggilan kaedah terus kepada pelaksanaan kaedah.

Pengikatan lewat, sebaliknya, menentukan jenis kelas pada masa jalan dan memilih pelaksanaan kaedah berdasarkan jenis objek sebenar. Ini menunjukkan bahawa pengkompil tidak mengetahui kelas tepat objek dan mesti bergantung pada persekitaran masa jalan untuk mencari pelaksanaan kaedah yang betul.

Kaedah Pertama: Pengikatan Awal

Dalam pengikatan awal, panggilan kaedah diselesaikan pada masa penyusunan. Mari kita pertimbangkan algoritma pengikatan awal berikut -

  • Isytiharkan kelas bernama Shape dan gunakan kaedah bernama draw().

  • Buat subkelas bernama Bulatan untuk melanjutkan kelas Bentuk.

  • Laksanakan kaedah cabutan() dalam kelas Bulatan.

  • Gunakan pengikatan awal untuk mencipta objek kelas Bulatan.

  • Panggil kaedah draw() objek.

Contoh

class Shape {
   public void draw() {
      System.out.println("Drawing a shape");
   }
}

class Circle extends Shape {
   @Override
   public void draw() {
      System.out.println("Drawing a circle");
   }
}

public class Main {
   public static void main(String[] args) {
      Shape shape = new Circle();
      shape.draw();
   }
}

Output

Drawing a circle

Perihalan kod dalam kaedah 1

Kami mempunyai kelas Shape dengan fungsi draw() yang mencetak "draw shape" dalam kod ini. Kami juga mempunyai kelas Bulatan yang memanjangkan kelas Shape dan mengatasi fungsi draw() untuk mengeluarkan "lukis bulatan". Dalam kelas Utama, kami mencipta objek kelas Bulatan menggunakan pengikatan awal dengan mengisytiharkannya sebagai jenis Bentuk. Apabila kita memanggil fungsi draw() objek bentuk, hasilnya akan menjadi "lukis bulatan". Ini kerana panggilan kaedah terikat dengan pelaksanaan kelas Bulatan pada masa binaan.

Kaedah 2: Pengikatan Lewat

Dalam pengikatan lewat, panggilan kaedah diselesaikan pada masa jalan. Mari kita pertimbangkan algoritma pengikatan lewat berikut -

  • Isytiharkan kelas yang dipanggil Haiwan dan gunakan kaedah yang dipanggil makeSound().

  • Buat dua subkelas bernama Anjing dan Kucing untuk melanjutkan kelas Haiwan.

  • Laksanakan kaedah makeSound() dalam kelas Anjing dan Kucing.

  • Gunakan pengikatan lewat untuk mencipta objek kelas Anjing.

  • Panggil kaedah makeSound() objek.

Contoh

class Animal {
   public void makeSound() {
      System.out.println("Animal makes a sound");
   }
}

class Dog extends Animal {
   @Override
   public void makeSound() {
      System.out.println("Dog barks");
   }
}

class Cat extends Animal {
   @Override
   public void makeSound() {
      System.out.println("Cat meows");
   }
}

public class Main {
   public static void main(String[] args) {
      Animal animal = new Dog();
      animal.makeSound();
   }
}

Output

Dog barks

Penerangan kod dalam kaedah 2

Dalam kod ini, kami mempunyai kelas Haiwan, yang mempunyai kaedah makeSound() yang mencetak "Haiwan mendapat bunyi". Kami juga mempunyai dua subkelas, Anjing dan Kucing, yang memanjangkan kelas Haiwan dan mengatasi kaedah makeSound() untuk mencetak "Salak anjing" dan "Kucing meow" masing-masing. Dalam kelas Utama, kami mencipta objek kelas Anjing menggunakan pengikatan lewat dan mengisytiharkannya sebagai jenis Haiwan. Apabila kita memanggil kaedah makeSound() pada objek haiwan, output akan menjadi "Salak anjing". Ini kerana panggilan kaedah terikat kepada pelaksanaan kelas Dog pada masa jalan berdasarkan jenis objek sebenar.

Perbezaan antara pengikatan awal dan pengikatan lewat di Jawa

PERBEZAAN

IKAT AWAL

kemudian mengikat

ANALISIS MASA

Masa kompilasi

runtime

Pelaksanaan kaedah

Ditentukan berdasarkan jenis pengisytiharan objek

Ditentukan berdasarkan jenis objek sebenar

fleksibiliti

Fleksibiliti pelaksanaan kaedah yang berubah secara dinamik adalah terhad

Memberi fleksibiliti melalui penghantaran kaedah dinamik dan polimorfisme

Prestasi

Prestasi lebih pantas kerana panggilan kaedah dihuraikan pada masa penyusunan

Memandangkan panggilan kaedah dihuraikan pada masa jalan, prestasi menjadi perlahan sedikit

Pengisytiharan objek

Pengisytiharan objek menggunakan jenis kelas

Pengisytiharan objek menggunakan jenis kelas terbitan

Kesimpulan

Ikatan awal dan pengikatan lewat ialah dua konsep penting dalam Java, yang menentukan cara panggilan kaedah dihuraikan. Pengikatan lewat menyelesaikan panggilan kaedah berdasarkan jenis objek sebenar semasa masa jalan, manakala kaedah pautan pengikatan awal memanggil pelaksanaannya pada masa penyusunan. Setiap kaedah mempunyai kelebihan dan kegunaan tersendiri. Walaupun pengikatan awal memberikan prestasi yang lebih baik kerana panggilan kaedah diselesaikan pada masa penyusunan, ia tidak membenarkan perubahan dinamik pada pelaksanaan kaedah. Pengikatan lewat, sebaliknya, membolehkan penghantaran kaedah dinamik, membolehkan polimorfisme dan fleksibiliti dalam penyembahan kaedah. Memahami perbezaan antara pengikatan awal dan pengikatan lewat adalah penting untuk menulis program Java yang cekap dan fleksibel.

Atas ialah kandungan terperinci Perbezaan antara pengikatan awal dan pengikatan lewat di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam