Rumah > Java > teks badan

Amalan terbaik Java untuk memanggil kaedah terlebih beban bagi kelas induk dan anak

王林
Lepaskan: 2024-02-09 11:30:09
ke hadapan
564 orang telah melayarinya

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.

Kandungan soalan

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;
        }
    }
Salin selepas log masuk

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);
    }
Salin selepas log masuk

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);
    }
Salin selepas log masuk

Ini nampaknya selalu memanggil kaedah ibu bapa, bagaimana saya boleh memanggil kaedah anak tanpa secara eksplisit melemparkan objek kepada anak?

Penyelesaian

Pada pendapat saya, anda harus mengatasinya dalam kelas super parent 中创建一个名为 methodcall() 的方法,并分别在 child seperti ini:

protected void methodcall(){
    system.out.println("parent class");
}
Salin selepas log masuk

dalam kelas child

@override
protected void methodcall(){
    system.out.println(this.name);
}
Salin selepas log masuk

Lepastu awak panggil macam nimethodcall

Tandatangan kaedah
private void callmethod(string name){
    parent parent;
    if(name != null) {
        parent = new child(name);
    } else {
        parent = new parent();
    }
    parent.methodcall();
}
Salin selepas log masuk

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 );
  }
}
Salin selepas log masuk

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);
}
Salin selepas log masuk

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!

sumber:stackoverflow.com
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