[Java] 상속(Inheritance)

u_yonu·2026년 1월 27일

Java

목록 보기
12/18
post-thumbnail

상속(Inheritance)

상위 클래스의 속성과 메서드를 물려받아 확장하여 새로운 자식 클래스를 정의하는 것

==> 헷갈리게 생겼지만 상위클래스의 그림은 ' 동물'을 뜻합니다.

상속의 특징

  • 코드 재사용성 : 상위 클래스에 정의된 필드, 메서드 사용 가능 / 공통된 기능을 상위 클래스에 정의
  • 상위클래스의 생성자와 초기화 블록은 상속하지 않음
  • extends 키워드 사용
  • 상속을 명시하지 않으면 기본적으로 Object 클래스를 상속 받고 있음
  • 자바에서는 다중 상속 불가
    (클래스 상속에서 다중 상속 허용 X)
  • 인터페이스를 사용하여 다중 상속과 비슷한 효과를 구현 가능

상속의 특징(is - a 관계)

  • A는 B이다(A is a B) 라는 상속을 통한 관계
  • 상위 클래스는 하위 클래스의 공통된 특성과 행동을 정의하며, 하위 클래스는 이를 확장하거나 구체화
  • 일반화와 전문화가 필요한 경우 사용

포함 관계(has - a 관계)

  • A는 B를 가지고 있다. (A has a B)라는 포함을 통한 관계
  • 한 클래스가 다른 클래스의 객체를 속성으로 포함하여 구현
  • 구성 요소를 나타낼 때 사용
  • 두 클래스는 독립적
특징IS-A 관계HAS-A 관계
구현 방식상속포함
의미A는 B이다.A는 B를 가지고 있다.
클래스 관계상위 클래스와 하위 클래스한 클래스가 다른 클래스의 객체를 포함
재사용성하위 클래스가 상위 클래스의 특성과 행동을 상속포함된 객체의 기능을 사용하여 동작 확장 가능
독립성두 클래스는 강하게 결합포함된 클래스는 독립적으로 설계 가능
예시강아지는 동물이다.자동차는 엔진을 가지고 있다.

상속의 특징

  • 접근 제한자 (public, protected, default, private)에 따라 상위 클래스의 멤버에 대한 접근 범위가 결정됨
  • 공통된 기능이 정의 되어 있는 상위 클래스만 수정하면 하위 클래스는 모두 적용
    => 유지 보수성이 좋음

Super 키워드

  • 하위 클래스에서 상위 클래스와 동일한 이름의 필드가 있을 경우, super를 사용하여 필드를 참조
  • 하위 클래스에서 상위 클래스의 메서드를 호출하여 기능을 유지하거나 확장할 수 있음

메서드 재정의(Overriding)

  • 메서드 이름, 매개변수, 반환타입이 상위 클래스와 동일해야함
  • 접근 제한자는 상위 클래스의 메서드보다 더 넓은 범위로만 변경가능
  • 조상보다 더 큰 예외를 던질 수 없음
  • @Override 어노테이션 사용을 권장
  • 메서드 오버로딩(Overloading)과 다른 개념

final 키워드

  • 변경 불가능성을 나타내는 키워드
  • 컴파일 타임 안정성을 높이는 데 사용
  • 변수 : 값의 고정성
  • 메서드 : 재정의 방지
  • 클래스 : 상속 불가능
  • 과도한 사용은 코드의 유연성을 감소 시킴

final 변수

  • 값이 변경되지 않는 상수를 선언할 때 사용
  • 선언과 동시에 초기화 혹은 생성자를 통한 초기화를 해야함
  • 참조 변수에 final을 사용하면 참조를 바꿀 수는 없지만 객체의 내부 상태는 변경 가능

final 메서드

  • 재정의(Overriding) 금지 -> 하위 클래스에서 재정의할 수 없음
  • 상위 클래스에서 중요한 동작을 변경되지 않도록 보호할 때 사용

final 클래스

  • 상속할 수 없는 클래스 정의
  • 클래스 자체를 확장할 필요가 없거나, 보안을 강화해야 하는 경우 사용
  • String 클래스는 final로 선언 되어있음
profile
비전공자의 개발도전기

0개의 댓글