Rumah > Java > javaTutorial > Bagaimanakah Saya Boleh Mengakses Kaedah Subkelas daripada Superclass di Java?

Bagaimanakah Saya Boleh Mengakses Kaedah Subkelas daripada Superclass di Java?

Barbara Streisand
Lepaskan: 2024-12-07 10:04:12
asal
709 orang telah melayarinya

How Can I Access Subclass Methods from a Superclass in Java?

Memanggil Kaedah Subkelas daripada Superclass

Masalah

Di Java, apabila mewarisi kelas dan mencipta subkelas, adalah perkara biasa untuk menghadapi masalah mengakses kaedah khusus subkelas dari dalam kelas super. Ini berlaku apabila anda membuat instantiate objek subkelas dan menetapkannya kepada pembolehubah superclass.

Penyelesaian

Untuk menyelesaikan pengehadan ini, anda boleh menggunakan salah satu daripada kaedah berikut:

  • Isytiharkan pembolehubah sebagai terbitan kelas:
Cat cat = new Cat("Feline", 12, "Orange");
cat.getName(); // OK
cat.getColor(); // OK (getColor() is in Cat)
Salin selepas log masuk
  • Letak pembolehubah kepada jenis konkrit yang dikehendaki:
Pet pet = new Cat("Feline", 12, "Orange");
((Cat)pet).getName(); // OK
((Cat)pet).getColor(); // OK (explicitly treated as Cat)
Salin selepas log masuk

Apabila anda melakukan pelakon, anda buat sementara waktu menganggap objek sebagai contoh jenis yang ditentukan. Ini membolehkan anda mengakses ahli dan kaedah khusus subkelas.

Contoh

Pertimbangkan kelas Utama yang diubah suai berikut:

public class Kennel {
    public static void main(String[] args) {
        // Create the pet objects
        Cat cat = new Cat("Feline", 12, "Orange");
        Pet dog = new Dog("Spot", 14, "Dalmatian");
        Pet bird = new Bird("Feathers", 56, 12);

        // Print out the status of the animals
        System.out.println("I have a cat named " + cat.getName()
                + ". He is " + cat.getAge() + " years old."
                + " He is " + cat.getColor()
                + ". When he speaks he says " + cat.speak());

        // Using a cast to access a subclass-specific method
        ((Cat)dog).getBreed(); // dog is treated as Cat to access getBreed()
        System.out.println("I also have a dog named " + dog.getName()
                + ". He is " + dog.getAge() + " years old."
                + " He is a " + ((Cat)dog).getBreed()
                + ". When he speaks he says " + dog.speak());

        System.out.println("And Finally I have a bird named "
                + bird.getName() + ". He is " + bird.getAge() + " years old."
                + " He has a wingspan of " + bird.getWingspan() + " inches."
                + " When he speaks he says " + bird.speak());
    }
}
Salin selepas log masuk

Dalam contoh ini, kelas Utama berjaya mendapatkan semula baka anjing itu menggunakan cast.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Kaedah Subkelas daripada Superclass di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan