Java에서 파생 클래스의 재정의 메서드에서 기본 클래스의 메서드를 어떻게 호출합니까?


137

두 개의 Java 클래스가 있습니다. B는 다음과 같이 다른 클래스 A를 확장합니다.

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

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

A.myMethod()에서 님 에게 전화하고 싶습니다 B.myMethod(). 나는 C ++ 세계 에서 왔으며 Java 에서이 기본 작업을 수행하는 방법을 모르겠습니다.

답변:


145

찾고있는 키워드는 super입니다. 예를 들어이 안내서를 참조하십시오 .


4
C ++에서 당신은 특정 조상 메소드를 호출 할 수 있지만, 자바는 아닙니다. 체인에 전달할 수 있습니다 ...
rogerdpack

132

그냥 super를 사용하여 호출하십시오.

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

21

대답은 다음과 같습니다.

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

20

super.MyMethod()의 내부에서 호출되어야 MyMethod()합니다 class B. 따라서 다음과 같아야합니다

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

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


7

Java Reflection 메커니즘을 사용하여 할 수 있다고 확신합니다. 슈퍼를 사용하는 것만 큼 간단하지는 않지만 더 많은 힘을줍니다.

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

class B extends A
{
    public void myMethod()
    {
        super.myMethod(); // calling parent method
    }
}

이것은 코드에 Java 리플렉션을 표시하지 않으며 다른 코드와 동일합니다. 답이 더 있습니까?
Nelda.tech는 17:09에


3
super.baseMethod(params);

슈퍼 키워드로 기본 메소드를 호출하고 해당 매개 변수를 전달하십시오.


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);
    }
}

3

참조하십시오. 여기서 기본 클래스의 메서드 중 하나를 재정의하므로 상속 된 클래스에서 기본 클래스 메서드를 호출 하려면 상속 된 클래스의 동일한 메서드에서 super 키워드 를 사용해야 합니다.


1

초기화에 이러한 메소드를 사용하는 경우 클래스 A의 생성자를 사용하고 클래스 B의 생성자 내에 super 키워드를 전달하십시오.

또는 서브 클래스 메소드에서 super 클래스의 메소드를 호출하려면 서브 클래스 메소드 내에서 다음과 같이 super 키워드를 사용해야합니다. super.myMethod ();


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);
    }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.