[Java] 상속의 정의

2025. 10. 17. 19:42·Java

1. 상속(Inheritance)이란?

상속은 객체지향 프로그래밍에서 핵심 개념 중 하나로, 부모 클래스(슈퍼클래스)의 멤버를 자식 클래스(서브클래스)가 그대로 가져다 쓰는 것을 의미합니다.
자식 클래스는 부모 클래스의 필드와 메서드를 상속받기 때문에 중복 코드를 줄이고 재사용성을 높일 수 있습니다.

1-1. 기본 예제

class Parent {
    int a;
    int b;
}

class Child extends Parent {
    int c;
}
  • Parent 클래스 멤버: a, b → 총 2개
  • Child 클래스 멤버: 상속받은 a, b + 자식 멤버 c → 총 3개

즉, 자식 클래스는 부모보다 항상 같거나 더 많은 멤버를 갖게 됩니다.


2. 멤버 개수(Member Count)란?

멤버 개수는 클래스가 가지고 있는 필드와 메서드의 총합을 의미합니다.
상속으로 부모 클래스의 멤버가 자식 클래스에 포함되기 때문에, 자식 클래스의 멤버 개수는 항상 부모 클래스의 멤버 개수와 같거나 많습니다.

2-1. 예제

class Parent {
    int a;          // 필드
    int b;          // 필드
    void hello() {} // 메서드
}

class Child extends Parent {
    int c;          // 필드
}
  • Parent 멤버 개수: 2 필드 + 1 메서드 = 3
  • Child 멤버 개수: 2 상속 필드 + 1 상속 메서드 + 1 자식 필드 = 4

3. 메서드 오버라이딩(Overriding)

자식 클래스에서 부모 클래스의 메서드를 재정의하는 것을 오버라이딩이라고 합니다.
중요한 점은, 멤버 개수에는 변화가 없습니다.

class Parent {
    void hello() { System.out.println("Parent"); }
}

class Child extends Parent {
    @Override
    void hello() { System.out.println("Child"); }
}
  • hello() 메서드를 재정의했지만, 객체 내부 구조상 메서드는 여전히 1개 존재합니다.
  • 단순히 기능이 재정의된 것이므로, 멤버 개수에는 변화가 없습니다.

4. private 멤버와 상속

부모 클래스의 private 필드는 자식 클래스에서 접근할 수 없지만, 자식 객체 안에 존재합니다.
따라서 멤버 개수에는 포함됩니다.

class Parent {
    private int a;
}

class Child extends Parent {
    int b;
}
  • Child 멤버 개수: a(상속, 접근 불가) + b = 총 2개
  • 접근 불가 여부와 관계없이 객체 구조상 존재하므로 멤버 개수에는 변화가 없습니다.

 

'Java' 카테고리의 다른 글

[Java] this와 super 이해하기 – 멤버 변수와 지역 변수의 차이  (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] this와 super 이해하기 – 멤버 변수와 지역 변수의 차이
  • [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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
싹난 감자🥔🌱
[Java] 상속의 정의
상단으로

티스토리툴바