foxpacking

Programming Lessons

Java 언어 Korean

Java 총 정리[70. super]

super

이전 걸음까지 상속과 관련이 있는 내용들을 계속해서 공부를 하고 있습니다. 이번에는 상속과 관련이 있는 명령어를 공부를 하려고 합니다. 이전 객체와 class를 할 때 자기 자신을 나타내는 this를 배운 기억이 있으실 겁니다. 이번에는 this와 비슷하지만 상속 개념이 필요한 명령어를 배워 보겠습니다.

이번 걸음에서는 super라는 명령어를 배워보도록 하겠습니다. super는 상속과 어떻게 연관이 있는지 공부를 하도록 하겠습니다. 이번 걸음을 통해서 super에 대해서 확실히 알 수 있는 걸음이 되실 수 있습니다.

super란과 super에 사용한 예제 및 방법 그리고 마지막으로 super를 꼭 사용을 해야 하는 경우를 이번 걸음에서 설명을 하도록 하겠습니다. 종종 사용되고 사용을 해야 하기 때문에 이번 걸음을 끝까지 꼭 봐주세요.

super란?

super메인사진

super는 this와 비슷하지만 다른 부분이 있습니다. 우선 같은 점은 class 안에 모든 것을 뜻하게 됩니다. 그래서 명령어를 이용해서 내 class안에 속성이나 메소드의 접근이 가능하게 됩니다. super는 this와 비슷하지만 다르게 부모class의 속성과 메소드를 가져다가 사용을 할 수 있게 합니다. 일반적으로 자식 class내용과 중복이 되지 않으면 super를 사용하지 않고 사용이 가능도 합니다.

super code 예제

    
class A{
    int a;
    void abc(){
        System.out.println("A");
    }
}

class B extends A{
    int a;
    void def(){
        this.a = 10;
        super.a = 20;
        System.out.println(this.a+","+super.a);
    }
    void kor(){
        this.abc(); //this
        super.abc();//super
        abc(); // this X, super X
    }
}
public class Test {
    public static void main(String[] args) {
        B b = new B();
        b.def();
        b.kor();
    }
}
    
super결과사진

위에 소스를 보면 super는 부모를 뜻하고 부모의 변수나 메소드를 접근을 할 수 있습니다. 하지만 자식 class에서 부모와 같은 변수가 없거나 같은 이름의 메소드가 없으면 this나 아무것도 사용을 하지 않아도 부모의 변수나 메소드 호출이 가능합니다.

super 꼭 필요한 경우

super는 자식과 같은 부분이 없다면 사용을 하지 않아도 됩니다. 하지만 꼭 써야 하는 경우가 있습니다.

  1. 부모에 생성자가 매개변수를 받아야 생성이 되는 경우
  2. 부모와 똑같은 이름으로 변수를 선언을 한경우

※부모와 똑같은 이름으로 메소드를 선언을 하면 Method Overriding이 되기 때문에 super와는 관련이 없습니다.

super정리사진

위에 설명을 보면 부모 class의 생성자가 default 생성자가 아닌 경우 자식 class B처럼 꼭 해줘야 Error가 발생을 하지 않습니다.

꼭 참고 해주세요. 또한 같은 변수는 this와 super로 나눠서 사용해야 a 두개의 변수 사용이 가능 합니다.

Dolphin

About Author

Leave a comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You may also like

Korean Programming 기초

IT 개발자 VS 프로축구선수 비교?

IT 개발자와 프로축구선수의 같은 점과 다른 점? 프로그래밍 공부를 하시면서 개발자로 취업을 하려고 하는데 과연 취업을 할 수 있을까? IT
Korean 클라우드

AWS 로그인 불가능, AWS고객 센터 이메일 문의 결과는?

AWS 고객센터 이메일 문의 솔직후기 AWS를 사용하기 위해 로그인을 하는 경우 이메일로 코드 번호를 보내지만 이메일로 받을 수 없는 상황이거나