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.
Untuk menyelesaikan pengehadan ini, anda boleh menggunakan salah satu daripada kaedah berikut:
Cat cat = new Cat("Feline", 12, "Orange"); cat.getName(); // OK cat.getColor(); // OK (getColor() is in Cat)
Pet pet = new Cat("Feline", 12, "Orange"); ((Cat)pet).getName(); // OK ((Cat)pet).getColor(); // OK (explicitly treated as Cat)
Apabila anda melakukan pelakon, anda buat sementara waktu menganggap objek sebagai contoh jenis yang ditentukan. Ini membolehkan anda mengakses ahli dan kaedah khusus subkelas.
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()); } }
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!