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

StackOverflow https://stackoverflow.com/questions/268929

문제

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

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

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

전화하고 싶습니다 A.myMethod() ~에서 B.myMethod(). 나는에서왔다 C ++ 세계, 그리고 나는 자바 에서이 기본적인 일을하는 방법을 모른다.

도움이 되었습니까?

해결책

당신이 찾고있는 키워드는입니다 super. 보다 이 안내서, 예를 들어.

다른 팁

슈퍼를 사용하여 호출하십시오.

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

답변은 다음과 같습니다.

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

super.MyMethod() 내부에서 호출해야합니다 MyMethod()class B. 따라서 다음과 같습니다

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

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

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

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

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

super.mymethod ()를 호출하십시오.

사용 감독자 예어.

super.baseMethod(params);

기본 방법으로 전화하십시오 감독자 키워드 및 각 매개 변수를 전달합니다.

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

여기에서, 당신은 기본 클래스의 메소드 중 하나를 무시하고 있으므로 상속 클래스에서 기본 클래스 메소드를 호출하려면 사용해야합니다. 감독자 상속 클래스와 동일한 방법의 키워드.

이 초기화를 위해이 방법을 사용하는 경우 클래스 A의 생성자를 사용하고 클래스 B의 생성자 안에 슈퍼 키워드를 통과하십시오.

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

// 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);
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top