[Java] this와 super 이해하기 – 멤버 변수와 지역 변수의 차이

2025. 10. 17. 20:10·Java

Java에서 상속을 다루다 보면, this와 super를 이용해 현재 객체와 부모 객체의 멤버 변수를 구분할 수 있습니다.
아래 예제를 통해 정확히 이해해봅시다!


코드 예제

class Parent {
    int x = 10;

    String parentMethod() {
        return "parent";
    }
}

class Child extends Parent {
    int x = 20;

    String childMethod() {
        return "child";
    }

    void printChild(int x) {
        System.out.println("x : " + x);
        System.out.println("this.x : " + this.x);
        System.out.println("super.x : " + super.x);
    }
}

public class superOverriding {
    public static void main(String[] args) {
        Child a = new Child();
        a.printChild(50);
    }
}

실행 결과

x : 50
this.x : 20
super.x : 10

각 변수 의미

  1. x (메서드 매개변수)
    • printChild(int x)에서 선언된 지역 변수
    • 메서드 내에서 가장 가까운 x를 참조
    • 값: 50
  2. this.x
    • 현재 객체(Child 객체)의 멤버 변수를 참조
    • Child 클래스에 선언된 int x = 20이 사용됨
    • 값: 20
  3. super.x
    • 부모 객체(Parent)의 멤버 변수를 직접 참조
    • Parent 클래스에 선언된 int x = 10이 사용됨
    • 값: 10

핵심 정리

  • 지역 변수 > 자식 멤버 > 부모 멤버 순으로 우선순위 적용
  • this는 현재 객체
  • super는 부모 객체
  • 같은 이름의 멤버가 자식/부모에 모두 존재해도, this와 super로 명확히 구분 가능

 

'Java' 카테고리의 다른 글

[Java] 상속의 정의  (0) 2025.10.17
[Java] Java spring에서 안전한 객체 복사와 불변 설계 패턴  (0) 2025.10.17
[Java] this()(생성자에서의 this 호출), this(참조변수로 자기 자신을 가리키는 경우)  (0) 2025.10.17
[JAVA] 객체지향개념Ⅱ  (0) 2025.10.13
[Java] 문자열 처리 성능비교 - String vs StringBuilder vs StringBuffer  (0) 2025.10.11
'Java' 카테고리의 다른 글
  • [Java] 상속의 정의
  • [Java] Java spring에서 안전한 객체 복사와 불변 설계 패턴
  • [Java] this()(생성자에서의 this 호출), this(참조변수로 자기 자신을 가리키는 경우)
  • [JAVA] 객체지향개념Ⅱ
싹난 감자🥔🌱
싹난 감자🥔🌱
개발 블로그
  • 싹난 감자🥔🌱
    감자에 싹이나서 잎이나서
    싹난 감자🥔🌱
  • 전체
    오늘
    어제
    • 분류 전체보기 (43)
      • Spring (3)
      • Java (17)
      • LLM (1)
      • DevOps (4)
      • Algorithm (14)
        • 백준 (4)
        • 프로그래머스 (0)
        • 코드업 (10)
      • Computer Science (3)
        • Operating System (2)
        • Computer Architecture (1)
      • Trouble Shooting 🚀 (0)
      • 회고 & 성장기록 (1)
      • 설계 📐 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Java
    비트
    알고리즘입력
    2차원 배열
    2진수
    BufferedReader
    배포
    Scanner
    자바성능
    자바 입력
    구간합
    docker
    자바Scanner비교
    자바BufferedReader
    코딩테스트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
싹난 감자🥔🌱
[Java] this와 super 이해하기 – 멤버 변수와 지역 변수의 차이
상단으로

티스토리툴바