Rumah > Java > javaTutorial > teks badan

Aplikasi polimorfisme antara muka dan kelas abstrak dalam Java

PHPz
Lepaskan: 2024-05-02 10:33:01
asal
1177 orang telah melayarinya

Di Java, polimorfisme dicapai melalui antara muka dan kelas abstrak. Antara muka mentakrifkan kaedah yang mesti dilaksanakan oleh kelas yang melaksanakannya; kelas abstrak mengandungi kaedah abstrak yang mesti dilaksanakan oleh subkelasnya. Polimorfisme dicapai dengan mencipta tatasusunan objek dan memanggil kaedah yang sama, membenarkan pelaksanaan berbeza dipanggil bergantung pada jenis sebenar elemen. Sebagai contoh, anda boleh mentakrifkan antara muka Shape untuk mentakrifkan kaedah lukisan kelas Shape, kemudian buat berbilang kelas bentuk (seperti Bulatan, Segiempat, Segi Tiga) dengan pelaksanaan yang berbeza dan menggunakan polimorfisme untuk melukis semua bentuk melalui kelas kanvas.

Java 中接口和抽象类的多态性应用

Aplikasi Polimorfisme dalam Antara Muka dan Kelas Abstrak dalam Java

Polymorphism ialah konsep utama dalam pengaturcaraan berorientasikan objek (OOP) yang membolehkan objek bertindak balas kepada panggilan kaedah yang sama dengan cara yang berbeza. Di Jawa, polimorfisme boleh dicapai melalui antara muka dan kelas abstrak.

Antaramuka

Antara muka mentakrifkan satu set kaedah yang mesti dilaksanakan oleh kelas yang melaksanakannya. Antara muka itu sendiri tidak mengandungi sebarang pelaksanaan, ia hanya menentukan kontrak.

public interface Shape {
    double getArea();
}
Salin selepas log masuk

Kelas Abstrak

Kelas abstrak ialah kelas yang mempunyai sekurang-kurangnya satu kaedah abstrak. Kaedah abstrak tidak dilaksanakan dan mesti dilaksanakan oleh subkelas mereka. Kelas abstrak boleh mengandungi kaedah dan medan konkrit.

public abstract class Animal {
    protected String name;
    
    public abstract void makeSound();
}
Salin selepas log masuk

Polymorphism

Menggunakan antara muka dan kelas abstrak, adalah mungkin untuk mencipta tatasusunan objek di mana setiap elemen mempunyai jenis yang berbeza. Apabila kaedah yang sama pada elemen ini dipanggil, pelaksanaan yang berbeza dipanggil bergantung pada jenis elemen sebenar.

Shape[] shapes = { new Circle(), new Square(), new Triangle() };
for (Shape shape : shapes) {
    System.out.println("Area: " + shape.getArea());
}
Salin selepas log masuk

Kes praktikal

Pertimbangkan kelas kanvas yang boleh melukis bentuk yang berbeza. Bentuk boleh ditakrifkan menggunakan antara muka berikut:

public interface Shape {
    void draw();
}
Salin selepas log masuk

Kemudian, berbilang kelas bentuk dengan pelaksanaan lukisan berbeza boleh dibuat:

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

public class Square implements Shape {
    @Override
    public void draw() { System.out.println("Drawing a square"); }
}

public class Triangle implements Shape {
    @Override
    public void draw() { System.out.println("Drawing a triangle"); }
}
Salin selepas log masuk

Kelas kanvas boleh menerima tatasusunan objek Bentuk, menggunakan polimorfisme untuk melukis semua bentuk:

public class Canvas {
    public void drawAll(Shape[] shapes) {
        for (Shape shape : shapes) {
            shape.draw();
        }
    }
}
Salin selepas log masuk

Melalui antara muka dan Kelas Abstrak, Polimorfisme dalam Java membenarkan kaedah dipanggil secara dinamik berdasarkan jenis objek sebenar, sekali gus membolehkan kod berskala dan boleh digunakan semula.

Atas ialah kandungan terperinci Aplikasi polimorfisme antara muka dan kelas abstrak dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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