Rumah Java javaTutorial Mengapakah subkelas menjana mesej ralat apabila memanggil kaedah terlampau beban?

Mengapakah subkelas menjana mesej ralat apabila memanggil kaedah terlampau beban?

Mar 08, 2024 am 11:15 AM
mesej ralat panggilan subkelas Kaedah terlebih beban

Mengapakah subkelas menjana mesej ralat apabila memanggil kaedah terlampau beban?

Mengapa subkelas menjana mesej ralat apabila memanggil kaedah terlebih beban?
Dalam pengaturcaraan berorientasikan objek, beban berlebihan ialah teknik mentakrifkan berbilang kaedah dengan nama yang sama dalam kelas yang sama. Apabila memanggil kaedah terlebih beban, pengkompil akan menentukan kaedah khusus untuk dipanggil berdasarkan jenis parameter kaedah, nombor atau susunan. Walau bagaimanapun, apabila subkelas mewarisi kaedah terlebih beban yang ditakrifkan dalam kelas induk, beberapa mesej ralat mungkin muncul. Mari jelaskan ini dengan contoh kod konkrit.

Katakan terdapat kelas induk Ibu Bapa yang mentakrifkan kaedah terlampau beban public void print(int a) dan public void print(String s) , subkelas Child mewarisi kelas induk dan cuba memanggil dua kaedah terlampau beban ini. Mari kita lihat contoh kod berikut: Parent 中定义了一个重载方法 public void print(int a)public void print(String s),子类 Child 继承了父类并尝试调用这两个重载方法。我们来看看下面的示例代码:

public class Parent {
    public void print(int a) {
        System.out.println("Printing integer: " + a);
    }

    public void print(String s) {
        System.out.println("Printing string: " + s);
    }
}

public class Child extends Parent {
    public static void main(String[] args) {
        Child child = new Child();
        child.print(10);  // 调用父类的重载方法 print(int a)
        child.print("Hello");  // 调用父类的重载方法 print(String s)
    }
}
Salin selepas log masuk

在上面的代码中,子类 Child 实例化后分别调用了父类 Parent 中的重载方法,这个示例是没有问题的,我们成功地调用了两个重载方法并输出了正确的结果。但是,当子类中重载同名方法时,就有可能会产生错误信息。让我们看下面的示例:

public class Child extends Parent {
    public void print(double d) {
        System.out.println("Printing double: " + d);
    }

    public static void main(String[] args) {
        Child child = new Child();
        child.print(10);  // Error: The method print(int) is ambiguous for the type Child
        child.print("Hello");  // 调用父类的重载方法 print(String s)
        child.print(10.5);  // 调用子类的重载方法 print(double d)
    }
}
Salin selepas log masuk

在这个例子中,子类 Child 在继承父类的重载方法的同时,又添加了一个新的重载方法 public void print(double d)。当我们尝试调用 child.print(10) 时,编译器会出现错误信息:The method print(int) is ambiguous for the type Child,这是因为编译器无法确定应该调用父类的 print(int a) 还是子类的 print(double d)rrreee

Dalam kod di atas, subkelas Child memanggil kaedah terlebih beban dalam kelas induk Ibu bapa selepas instantiasi masalah dengan contoh ini, kami berjaya memanggil kedua-dua kaedah terlebih beban dan mengeluarkan hasil yang betul. Walau bagaimanapun, apabila kaedah dengan nama yang sama ditindih dalam subkelas, mesej ralat mungkin dijana. Mari lihat contoh berikut:

rrreee

Dalam contoh ini, subkelas Child mewarisi kaedah terlebih beban kelas induk dan menambah kaedah terlampau beban baharu public void print(double d) kod>. Apabila kita cuba memanggil <code>child.print(10), pengkompil akan memberikan mesej ralat: Kaedah print(int) adalah samar-samar untuk jenis Child Ini kerana pengkompil tidak dapat menentukan bahawa induk kelas hendaklah dipanggil print(int a) atau subclass print(double d).

Untuk menyelesaikan masalah ini, kami boleh menentukan kaedah yang akan dipanggil secara eksplisit, atau mengelak daripada membebankan kaedah sedia ada kelas induk dalam subkelas. Apabila kaedah dalam subkelas bercanggah dengan kaedah dalam kelas induk, pengkompil tidak akan dapat menentukan kaedah yang hendak dipanggil, sekali gus menghasilkan mesej ralat. 🎜🎜Dalam pengaturcaraan berorientasikan objek, adalah sangat penting untuk memahami konsep lebihan beban dan warisan Hanya dengan memahami sepenuhnya ciri-ciri ini kita boleh menulis kod yang lebih mantap dan jelas. 🎜

Atas ialah kandungan terperinci Mengapakah subkelas menjana mesej ralat apabila memanggil kaedah terlampau beban?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

PHP mengembalikan pengekodan berangka mesej ralat dalam operasi MySQL sebelumnya PHP mengembalikan pengekodan berangka mesej ralat dalam operasi MySQL sebelumnya Mar 22, 2024 pm 12:31 PM

Artikel ini akan menerangkan secara terperinci pengekodan digital mesej ralat yang dikembalikan oleh PHP dalam operasi Mysql sebelumnya. Editor berpendapat ia agak praktikal, jadi saya berkongsi dengan anda sebagai rujukan . Menggunakan PHP untuk mengembalikan maklumat ralat MySQL Pengekodan Berangka Pengenalan Semasa memproses pertanyaan mysql, anda mungkin menghadapi ralat. Untuk mengendalikan ralat ini dengan berkesan, adalah penting untuk memahami pengekodan berangka mesej ralat. Artikel ini akan membimbing anda menggunakan php untuk mendapatkan pengekodan berangka mesej ralat Mysql. Kaedah mendapatkan pengekodan berangka maklumat ralat 1. mysqli_errno() Fungsi mysqli_errno() mengembalikan nombor ralat terkini sambungan MySQL semasa. Sintaksnya adalah seperti berikut: $erro

Selesaikan masalah 'ralat: pengisytiharan yang dijangka sebelum token '}'' dalam kod C++ Selesaikan masalah 'ralat: pengisytiharan yang dijangka sebelum token '}'' dalam kod C++ Aug 26, 2023 am 09:01 AM

Selesaikan masalah "error:expecteddeclarationbefore'}'token" dalam kod C++ Dalam proses menulis kod C++, kita sering menghadapi pelbagai ralat kompilasi. Salah satu ralat biasa ialah "error:expecteddeclarationbefore'}'token". Ralat ini biasanya berlaku apabila terdapat sepasang pendakap ({}) dalam kod kami yang tidak dipadankan dengan betul.

Gunakan fungsi strconv.ParseComplex untuk menukar rentetan kepada nombor kompleks dan mengembalikan mesej ralat Gunakan fungsi strconv.ParseComplex untuk menukar rentetan kepada nombor kompleks dan mengembalikan mesej ralat Jul 28, 2023 pm 05:31 PM

Tajuk: Tukar rentetan kepada nombor kompleks menggunakan fungsi strconv.ParseComplex dan kembalikan mesej ralat Teks artikel: Dalam bahasa Go, kadangkala kita perlu menukar rentetan kepada nombor kompleks untuk melaksanakan operasi nombor kompleks atau operasi lain yang berkaitan . Dalam pustaka standard bahasa Go, pakej strconv menyediakan fungsi yang sangat praktikal - ParseComplex, yang digunakan untuk menukar rentetan kepada jenis kompleks. Fungsi ParseComplex ditakrifkan seperti berikut: funcParseC

Penyelesaian untuk win7 mengumpul maklumat ralat dan memulakan semula Penyelesaian untuk win7 mengumpul maklumat ralat dan memulakan semula Jul 08, 2023 pm 02:03 PM

Apabila kita menggunakan komputer, kita tidak dapat mengelakkan beberapa masalah. Sebagai contoh, seorang rakan baru-baru ini melaporkan bahawa win7 mengumpul mesej ralat dan dimulakan semula. Malah, penyelesaian untuk win7 mengumpul maklumat ralat dan memulakan semula adalah sangat mudah. Hari ini, editor akan mengajar anda cara menyelesaikan masalah memulakan semula win7 mengumpul mesej ralat. Jom belajar sama-sama! 1. Mulakan semula komputer dan lihat sama ada ia boleh memasuki sistem. Jika tidak, paksa penutupan semasa proses permulaan Selepas mengulanginya beberapa kali, komputer akan membaiki secara automatik dan memasuki mod selamat permulaan lanjutan. 2. Tekan kekunci win + r untuk membuka run, masukkan msconfig, dan klik OK. Klik Perkhidmatan, tandai Sembunyikan semua perkhidmatan Microsoft, dan kemudian klik [Lumpuhkan Semua]. Kemudian mulakan semula komputer. 3. Gunakan pemasangan semula sistem satu klik Xiaoyu untuk membantu kami

Gunakan fungsi time.ParseDuration untuk menghuraikan rentetan ke dalam selang masa dan mengembalikan mesej ralat Gunakan fungsi time.ParseDuration untuk menghuraikan rentetan ke dalam selang masa dan mengembalikan mesej ralat Jul 26, 2023 pm 07:02 PM

Gunakan fungsi time.ParseDuration untuk menghuraikan rentetan ke dalam selang masa dan mengembalikan mesej ralat Dalam bahasa Go, pakej masa menyediakan banyak fungsi dan alatan untuk memproses masa dan tarikh. Satu fungsi yang sangat berguna ialah fungsi ParseDuration, yang menghuraikan rentetan ke dalam selang masa. Nilai pulangan fungsi ParseDuration terdiri daripada dua bahagian: selang masa dan maklumat ralat. Jika format rentetan adalah betul, Durat yang mewakili selang masa akan dikembalikan.

Mengapakah subkelas menjana mesej ralat apabila memanggil kaedah terlampau beban? Mengapakah subkelas menjana mesej ralat apabila memanggil kaedah terlampau beban? Mar 08, 2024 am 11:15 AM

Mengapakah subkelas menjana mesej ralat apabila memanggil kaedah terlampau beban? Dalam pengaturcaraan berorientasikan objek, beban berlebihan ialah teknik mentakrifkan pelbagai kaedah dengan nama yang sama dalam kelas yang sama. Apabila memanggil kaedah terlebih beban, pengkompil akan menentukan kaedah khusus untuk dipanggil berdasarkan jenis parameter kaedah, nombor atau susunan. Walau bagaimanapun, apabila subkelas mewarisi kaedah terlebih beban yang ditakrifkan dalam kelas induk, beberapa mesej ralat mungkin muncul. Mari kita jelaskan ini dengan contoh kod konkrit. Katakan terdapat kelas induk bernama Ibu Bapa

Bagaimanakah PHP mengendalikan pengecualian dan mesej ralat? Bagaimanakah PHP mengendalikan pengecualian dan mesej ralat? Jun 29, 2023 am 08:45 AM

PHP, sebagai bahasa skrip peringkat tinggi, digunakan secara meluas dalam membangunkan aplikasi web dan laman web dinamik. Dalam pembangunan PHP, pengendalian pengecualian dan mesej ralat adalah bahagian yang sangat penting. Artikel ini akan memperkenalkan cara PHP mengendalikan pengecualian dan mesej ralat. 1. Pengetahuan asas pengendalian ralat Dalam PHP, terdapat tiga jenis ralat yang berbeza: ralat maut, amaran dan pemberitahuan. Ralat maut akan menyebabkan skrip berhenti melaksanakan serta-merta, amaran akan memaparkan mesej amaran tetapi skrip akan terus dilaksanakan dan pemberitahuan hanyalah peringatan tulen. PHP menyediakan beberapa fungsi terbina dalam untuk ditangkap

Penyelesaian untuk win10 mengumpulkan maklumat ralat dan memulakan semula Penyelesaian untuk win10 mengumpulkan maklumat ralat dan memulakan semula Jul 12, 2023 pm 07:33 PM

Apabila kita menggunakan komputer, kita tidak dapat mengelakkan beberapa masalah. Sebagai contoh, seorang rakan baru-baru ini melaporkan bahawa win10 mengumpul mesej ralat dan dimulakan semula. Malah, penyelesaian untuk win10 mengumpul maklumat ralat dan memulakan semula adalah sangat mudah. Hari ini, editor akan mengajar anda cara menyelesaikan masalah win10 mengumpul mesej ralat dan memulakan semula. Jom belajar sama-sama! 1. Mulakan semula komputer anda dan lihat sama ada ia boleh memasuki sistem. Jika tidak, tutup paksa dan tutup paksa semasa permulaan. Selepas mengulangi ini beberapa kali, komputer secara automatik akan membaiki dirinya sendiri dan memasuki mod selamat lanjutan. 2. Tekan kekunci win + r untuk membuka operasi, masukkan msconfig, dan klik OK. Klik Perkhidmatan, tandai Sembunyikan semua perkhidmatan Microsoft, dan kemudian klik Lumpuhkan semua. Kemudian mulakan semula komputer anda. 3. Gunakan Xiaoyu untuk klik

See all articles