Warisan membolehkan penciptaan kelas baharu yang mewarisi medan dan kaedah daripada kelas sedia ada, dan polimorfisme membolehkan objek diproses dengan cara yang berbeza bergantung pada jenisnya. Warisan mencipta hierarki kelas, dan polimorfisme membolehkan kod berfungsi dengan pelbagai jenis objek. Dalam sistem pengurusan tempat perlindungan haiwan, warisan boleh digunakan untuk mencipta kelas haiwan, dan polimorfisme boleh digunakan untuk mengendalikan ciri dan perbezaan sepunya antara pelbagai jenis haiwan, seperti dengan membuat bunyi.
Kekeliruan untuk Pemula Java: Kegunaan Ajaib Pewarisan dan Polimorfisme
Pewarisan dan polimorfisme ialah konsep asas pengaturcaraan berorientasikan objek, dan kadangkala sukar bagi pemula untuk memahaminya. Artikel ini bertujuan untuk menghuraikan kedua-dua konsep ini melalui kes praktikal.
Warisan
Warisan ialah mekanisme untuk mencipta kelas baharu yang mewarisi medan dan kaedah daripada kelas sedia ada. Ia membolehkan kami menggunakan semula kod dan mencipta hierarki kelas.
// 父类 class Shape { protected double length, width; public Shape(double length, double width) { this.length = length; this.width = width; } public double getArea() { return length * width; } } // 子类 class Rectangle extends Shape { public Rectangle(double length, double width) { super(length, width); } @Override public double getArea() { return length * width; } }
Dalam contoh ini, kelas Rectangle
mewarisi daripada kelas Shape
. Kelas Rectangle
menggunakan semula medan dan kaedah getArea()
daripada kelas Shape
dan mentakrifkan pembinanya sendiri. Rectangle
类继承自 Shape
类。Rectangle
类重用了 Shape
类中的字段和 getArea()
方法,并定义了一个自己的构造函数。
多态
多态是指对象可以以不同方式被处理,具体取决于它们的类型。它允许我们编写代码,该代码可以与多种类型对象一起工作,而无需显式地检查对象类型。
Shape shape = new Rectangle(4, 5); System.out.println(shape.getArea()); // 输出:20.0 Shape shape2 = new Circle(3.14); System.out.println(shape2.getArea()); // 输出:30.159265358979323
在这种情况下,shape
和 shape2
变量都引用 Shape
类型的对象,但它们实际上指向不同的子类对象(Rectangle
和 Circle
)。由于多态,我们能够调用 getArea()
方法,而不必知道对象的具体类型。
实战案例
继承和多态特别适合于创建可扩展且可重用的代码。例如,考虑一个动物收容所管理系统:
// Animal 类包含动物的共同特征 abstract class Animal { protected String name; protected int age; public Animal(String name, int age) { this.name = name; this.age = age; } public abstract void speak(); } // Dog 类继承 Animal 类 class Dog extends Animal { public Dog(String name, int age) { super(name, age); } @Override public void speak() { System.out.println("Woof!"); } } // Cat 类继承 Animal 类 class Cat extends Animal { public Cat(String name, int age) { super(name, age); } @Override public void speak() { System.out.println("Meow!"); } }
每个动物都能通过 speak()
Polymorphism
Polymorphism ialah apabila objek boleh diproses dengan cara yang berbeza, bergantung pada jenisnya. Ia membolehkan kami menulis kod yang berfungsi dengan pelbagai jenis objek tanpa perlu menyemak jenis objek secara eksplisit.List<Animal> animals = new ArrayList<>(); animals.add(new Dog("Rex", 5)); animals.add(new Cat("Fluffy", 2)); for (Animal animal : animals) { animal.speak(); }
shape
dan shape2
merujuk kepada objek jenis Shape
, tetapi ia sebenarnya menunjuk kepada subkelas yang berbeza Objek ( Segi empat tepat
dan Bulatan
). Disebabkan oleh polimorfisme, kami dapat memanggil kaedah getArea()
tanpa mengetahui jenis objek tertentu. 🎜🎜🎜Contoh Praktikal🎜🎜🎜Warisan dan polimorfisme amat sesuai untuk mencipta kod berskala dan boleh digunakan semula. Sebagai contoh, pertimbangkan sistem pengurusan tempat perlindungan haiwan: 🎜Woof! Meow!
speak()
. Oleh kerana sifat polimorfik, kita boleh dengan mudah meletakkan objek haiwan yang berbeza ke dalam senarai, kemudian melelang melalui senarai dan membuat setiap haiwan mengeluarkan bunyi. 🎜rrreee🎜🎜Output: 🎜🎜rrreee🎜Dengan pewarisan dan polimorfisme, kami boleh mencipta kod yang fleksibel dan boleh diperluas yang boleh mengendalikan ciri dan perbezaan sepunya antara pelbagai jenis objek. 🎜Atas ialah kandungan terperinci Kekeliruan untuk Pemula Java: Penggunaan Ajaib Pewarisan dan Polimorfisme. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!