Di Java, bagaimana cara memanggil metode kelas dasar dari metode utama dalam kelas turunan?

140

Saya memiliki dua kelas Java: B, yang memperluas kelas A lainnya, sebagai berikut:

class A {
    public void myMethod() { /* ... */ }
}

class B extends A {
    public void myMethod() { /* Another code */ }
}

Saya ingin menelepon A.myMethod()dari B.myMethod(). Saya berasal dari dunia C ++ , dan saya tidak tahu bagaimana melakukan hal dasar ini di Java.

Creasixtine
sumber

Jawaban:

147

Kata kunci yang Anda cari adalah super. Lihat panduan ini , misalnya.

beristirahat
sumber
4
Sepertinya di C ++ Anda dapat memanggil metode leluhur tertentu, tetapi tidak java, Anda dapat meneruskannya ke rantai ...
rogerdpack
135

Sebut saja menggunakan super.

public void myMethod()
{
    // B stuff
    super.myMethod();
    // B stuff
}
Robin
sumber
21

Jawabannya adalah sebagai berikut:

super.Mymethod();
super();                // calls base class Superclass constructor.
super(parameter list);          // calls base class parameterized constructor.
super.method();         // calls base class method.
Yograj kingaonkar
sumber
20

super.MyMethod()harus dipanggil di MyMethod()dalam class B. Jadi seharusnya sebagai berikut

class A {
    public void myMethod() { /* ... */ }
}

class B extends A {
    public void myMethod() { 
        super.MyMethod();
        /* Another code */ 
    }
}
Kasun Siyambalapitiya
sumber
8

panggil super.myMethod ();

Elie
sumber
7

Saya cukup yakin bahwa Anda dapat melakukannya menggunakan mekanisme Java Reflection. Ini tidak semudah menggunakan super tetapi memberi Anda lebih banyak kekuatan.

class A
{
    public void myMethod()
    { /* ... */ }
}

class B extends A
{
    public void myMethod()
    {
        super.myMethod(); // calling parent method
    }
}
Khaled A Khunaifer
sumber
Ini tidak menunjukkan refleksi java dalam kode dan merupakan kode yang sama dengan yang lain. Apakah ada lebih banyak jawabannya?
Nelda.techspiress
3
super.baseMethod(params);

panggil metode dasar dengan kata kunci super dan teruskan params masing-masing.

kinshuk4
sumber
3
class test
{
    void message()
    {
        System.out.println("super class");
    }
}

class demo extends test
{
    int z;
    demo(int y)
    {
        super.message();
        z=y;
        System.out.println("re:"+z);
    }
}
class free{
    public static void main(String ar[]){
        demo d=new demo(6);
    }
}
umanathan
sumber
3

Lihat, di sini Anda menimpa salah satu metode kelas dasar sehingga jika Anda ingin memanggil metode kelas dasar dari kelas yang diwarisi maka Anda harus menggunakan kata kunci super dalam metode yang sama dengan kelas yang diwarisi.

Rahul Yadav
sumber
1

Jika Anda menggunakan metode ini untuk inisialisasi, gunakan konstruktor kelas A dan berikan kata kunci super di dalam konstruktor kelas B.

Atau jika Anda ingin memanggil metode kelas super dari metode subkelas maka Anda harus menggunakan kata kunci super di dalam metode subkelas seperti: super.myMethod ();

rawat ashish
sumber
1
// Using super keyword access parent class variable
class test {
    int is,xs;

    test(int i,int x) {
        is=i;
        xs=x;
        System.out.println("super class:");
    }
}

class demo extends test {
    int z;

    demo(int i,int x,int y) {
        super(i,x);
        z=y;
        System.out.println("re:"+is);
        System.out.println("re:"+xs);
        System.out.println("re:"+z);
    }
}

class free{
    public static void main(String ar[]){
        demo d=new demo(4,5,6);
    }
}
umanathan
sumber