밤과라임
2k
2018-12-05 16:31:32
1
132

java super() 질문입니다.


다른 메소드에서 A.b(c)로 A클래스의 b메소드에 c인자를 넣어호출했을때

해당 클래스의 메소드는

public b(short c)

{ super(c);

}


이런식으로 되어있다면 이건 이후어떻게 작동하는건가요??


super가 상속에서 부모클래스로 올라가는정도로 이해하고있었는데

메소드내에 파라미터를 가지고 실행된다면 어떻게될지 감이안잡힙니다.

해당메소드는

public class A-1 extends F{


내에 있습니다.

0
0
  • 답변 1

  • 엔카나
    319
    2018-12-05 16:56:07

    this 가 자기 자신 인스턴스의 참조값을 가지고 있는 키워드라면,

    super 는 자기 자신의 상위 인스턴스의 참조값을 가지고 있는 키워드입니다.


    하위 클래스의 인스턴스를 생성하면 마치 상위 클래스의 모든 맴버들이 하위 클래스의 인스턴스 내에 담겨있는것처럼 보이지만, 실제로는 상위 클래스의 인스턴스가 먼저 생성되고 그 이후에 하위 클래스의 인스턴스가 생성됩니다.

    그리고 이 둘은 밀접하게 연관되죠.

    단, 이 상위 클래스의 인스턴스는 외부에서 접근이 불가능하고 하위 클래스의 인스턴스에서만 접근이 가능합니다.

    그 방법이 super 인겁니다.


    참고로, 하위 클래스의 생성자 첫번째 문장은 반드시 상위 클래스의 생성자 호출문이 위치해야한다는것도 이러한 이유때문입니다.


    super() 는 상위 클래스의 생성자, super.a() 는 상위 클래스의 메소드, super.b 는 상위 클래스의 필드에 접근하는 문장입니다.


    1
  • 로그인을 하시면 답변을 등록할 수 있습니다.