Editor PHP Zimo membawakan anda amalan terbaik dalam pengaturcaraan Java - memanggil kaedah terlebih muatan kelas induk dan subkelas. Di Jawa, pewarisan ialah konsep pengaturcaraan berorientasikan objek penting yang membolehkan subkelas mewarisi sifat dan kaedah kelas induk. Kelebihan kaedah berlaku apabila kedua-dua kelas induk dan subkelas mentakrifkan kaedah dengan nama yang sama. Dalam kes ini, kita perlu memberi perhatian kepada cara memanggil kaedah terlebih beban kelas induk dan subkelas dengan betul untuk memastikan ketepatan dan kebolehselenggaraan program. Artikel ini akan memberi anda pengenalan terperinci kepada amalan terbaik untuk memanggil kaedah terlebih beban kelas induk dan subkelas untuk membantu anda menjadi lebih selesa dalam pengaturcaraan Java.
Apakah cara terbaik untuk memanggil kaedah yang terlebih beban oleh kedua-dua kelas ibu bapa dan anak? Contohnya. Katakan saya mempunyai kelas ibu bapa dan anak
private class parent{ public parent() { } } private class child extends parent{ string name; public child(string name) { this.name = name; } }
Saya ingin mencipta kaedah yang membebankan kedua-duanya
private void methodcall(parent parent){ system.out.println("parent class"); } private void methodcall(child child){ system.out.println(child.name); }
Saya mencipta kaedah untuk mencipta ibu bapa atau anak dan memanggil kaedah methodcall
private void callMethod(String name){ Parent parent; if(name != null) { parent = new Child(name); } else { parent = new Parent(); } methodCall(parent); }
Ini nampaknya selalu memanggil kaedah ibu bapa, bagaimana saya boleh memanggil kaedah anak tanpa secara eksplisit melemparkan objek kepada anak?
Pada pendapat saya, anda harus mengatasinya dalam kelas super parent
中创建一个名为 methodcall() 的方法,并分别在 child
seperti ini:
protected void methodcall(){ system.out.println("parent class"); }
dalam kelas child
@override protected void methodcall(){ system.out.println(this.name); }
Lepastu awak panggil macam nimethodcall
private void callmethod(string name){ parent parent; if(name != null) { parent = new child(name); } else { parent = new parent(); } parent.methodcall(); }
ditentukan oleh nama dan senarai parameternya. Ini bermakna methodcall(parent)
和 methodcall(client)
berbeza.
Apa yang anda mahukan bukanlah bebanan yang berlebihan, tetapi membebankan. Anda tahu apa yang saya maksudkan apabila anda menambah anotasi @override
pada kaedah dalam @override
添加到 child
dalam kod anda - pengkompil akan mengadu...
Jika anda membiarkan takrif kelas tidak berubah, anda perlu menghantar ke child
才能调用相应的方法 - 尽管这根本不起作用,因为 methodcall()
是非静态的(或者您有让 callmethod()
作为 child
untuk memanggil kaedah yang sepadan - walaupun ini tidak berfungsi sama sekali kerana methodcall()
bukan statik (atau anda perlu membenarkan callmethod()
sebagai ahli
Atau anda menukar kod anda seperti ini:
class parent { public parent() {} public <t extends parent> void methodcall( final t arg ) { out.println( getclass().getname() ); } } class child extends parent { string name; public child( string name ) { this.name = name; } @override public <t extends parent> void methodcall( final t arg ) { out.println( name ); } }
Gunakannya seperti ini:
public static void callMethod( final String name ) { Parent parent; if( name != null ) { parent = new Child( name ); } else { parent = new Parent(); } parent.methodCall(parent); }
Atas ialah kandungan terperinci Amalan terbaik Java untuk memanggil kaedah terlebih beban bagi kelas induk dan anak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!