Rumah > Java > javaTutorial > teks badan

The Maze of Java Inheritance: Menavigasi Superclasses, Subclasses dan Polymorphism

王林
Lepaskan: 2024-03-16 12:52:02
ke hadapan
853 orang telah melayarinya

Java 继承的迷宫:导航超类、子类和多态

Dalam warisan Java, kelas super (kelas induk) ialah kelas universal yang mentakrifkan kelakuan dan sifat objek, manakala subkelas (kelas terbitan) mewarisi daripada kelas super dan melanjutkan fungsinya. Subkelas boleh menggunakan ahli bukan persendirian superclass dan boleh mengatasi kaedah superclass.

Polimorfisme:

Polymorphism membolehkan tingkah laku objek berubah-ubah bergantung pada jenis sebenar. Di Java, objek subkelas boleh diberikan kepada objek superclass dan apabila kaedah superclass dipanggil, kaedah sebenar yang dilaksanakan bergantung pada jenis objek sebenar.

Kelebihan polimorfisme:

  • Penggunaan semula kod: Kelas super boleh mentakrifkan gelagat biasa dan berbilang subkelas boleh digunakan semula.
  • Kebolehlanjutan: Adalah mudah untuk menambah subkelas baharu tanpa mengubah suai superclass.
  • Gandingan longgar: Kod pelanggan hanya perlu berinteraksi dengan superclass tanpa mengetahui jenis objek sebenar.

Cabaran Polimorfik:

  • Jenis pemadaman: Selepas penyusunan, maklumat jenis subkelas akan hilang, menjadikannya mustahil untuk membezakan subkelas yang berbeza pada masa jalan.
  • Mengatasi kaedah: Subkelas boleh mengatasi kaedah kelas super Jika anda tidak berhati-hati, anda mungkin melanggar tingkah laku kelas induk.
  • Pelanggaran Keselamatan: Jika jenis sebenar objek subkelas berbeza daripada jenis yang diberikan kepada objek superclass, ia mungkin menyebabkan isu keselamatan.

Amalan Terbaik:

  • Hubungan pewarisan yang ditakrifkan dengan jelas: Tentukan secara eksplisit kelas super mana yang diwarisi oleh subkelas.
  • Timpa kaedah dengan berhati-hati: Berhati-hati pertimbangkan akibat mengatasi kaedah superclass.
  • Gunakan kelas dan antara muka abstrak: Kelas dan antara muka abstrak boleh memberikan warisan yang lebih fleksibel dan selamat.
  • Ujian unit: Pastikan tingkah laku polimorfik berfungsi dengan betul dalam semua kes.

Salah faham biasa:

  • Polymorphism bukan warisan: Polymorphism adalah berdasarkan warisan, tetapi bukan warisan itu sendiri.
  • Subkelas sentiasa lebih baik daripada superclass: Subclass tidak semestinya pilihan yang lebih baik daripada superclass.
  • Polymorphism boleh menyelesaikan semua masalah: Polymorphism ialah tool yang berkuasa, tetapi ia tidak dapat menyelesaikan semua masalah reka bentuk perisian.

Contoh:

Pertimbangkan contoh berikut:

class Shape {
protected String name;

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

class Rectangle extends Shape {
public void draw() {
super.draw();
System.out.println("Drawing a rectangle");
}
}

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

public class Main {
public static void main(String[] args) {
Shape s1 = new Rectangle();
Shape s2 = new Circle();

s1.draw(); // Prints "Drawing a rectangle"
s2.draw(); // Prints "Drawing a circle"
}
}
Salin selepas log masuk

Dalam contoh ini, Shape ialah superclass yang mentakrifkan kelakuan dan sifat biasa. Segi empat tepat dan Bulatan ialah subkelas yang diwarisi daripada Shape yang memanjangkan tingkah laku Shape. Kaedah utama mencipta dua objek Bentuk, satu diberikan kepada Segi empat tepat dan satu lagi kepada Bulatan. Apabila kaedah draw() dipanggil, kaedah sebenar yang dilaksanakan bergantung pada jenis objek sebenar, menunjukkan polimorfisme.

Atas ialah kandungan terperinci The Maze of Java Inheritance: Menavigasi Superclasses, Subclasses dan Polymorphism. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:lsjlt.com
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!