⏳ Time Log/1. One Day (Daily · TIL)

Day 10 (10/31) - Java 상속 개념 심화

this.Serena 2026. 2. 18. 23:41

📝 오늘의 강의 요약

핵심 키워드: 상속(Inheritance), super, 오버라이딩, 제어자(Modifier), 싱글톤(Singleton)

  • Java: 부모 클래스의 기능을 물려받아 확장하는 상속의 원리와 객체 생성 제한 기법 학습
  • Java: this와 super를 통한 객체 내부 참조 및 부모 멤버 접근 방식 정립
  • 디자인 패턴: 전역에서 단 하나의 인스턴스만 보장하는 싱글톤 패턴 구현 및 활용처 파악

☕ Java 상속과 다형성

1. 상속(Inheritance)의 기본

  • 개념: 부모 클래스(Superclass)의 필드와 메서드를 자식 클래스(Subclass)가 물려받는 것
  • 키워드: extends를 사용하여 구현하며, 자식은 부모의 자원을 재사용하거나 확장 가능
  • 메서드 재정의(Overriding): 부모의 메서드를 자식의 용도에 맞게 수정하여 사용하는 기법
  • @Override 어노테이션: 오버라이딩이 올바르게 되었는지 컴파일러가 체크하도록 강제하는 안전장치

2. 오버라이딩(Overriding) vs 오버로딩(Overloading)

구분 오버라이딩 (Overriding) 오버로딩 (Overloading)
범위 상속 관계(부모-자식) 한 클래스 내부
목적 부모의 기능을 변경/수정 같은 이름으로 다양한 입력 처리
조건 이름, 매개변수, 리턴타입 일치 이름만 같고 매개변수 구성이 다름
시점 실행 시(Runtime) 결정 컴파일 시(Compile time) 결정

3. super vs this 비교

  • this / this(): 현재 클래스의 인스턴스나 자신의 다른 생성자 호출
  • super / super(): 부모 클래스의 멤버 참조나 부모 생성자 호출
  • 주의사항: super()와 this()는 반드시 생성자의 첫 줄에 위치해야 함

🔒 제어자(Modifier)와 싱글톤

1. 접근 제어자(Access Modifier) 활용 범위

  • public > protected > (default) > private 순으로 제한 강화
  • 캡슐화 적용: 필드는 private으로 숨기고 메서드(getter/setter)를 통해 안전하게 소통

2. 기타 제어자 특징

  • static: 클래스 단위로 관리되며 객체 생성 없이 공유되는 멤버
  • final:
    • 클래스에 붙으면 상속 불가
    • 메서드에 붙으면 오버라이딩 불가
    • 변수에 붙으면 수정 불가(상수)
  • abstract: 추상 클래스나 메서드 선언 시 사용 (실체는 자식에서 구현)

3. 싱글톤 패턴(Singleton Pattern)

  • 목적: 특정 클래스의 객체를 단 하나만 생성하여 어디서든 공유하도록 보장
  • 구현 핵심:
    1. private 생성자: 외부에서 new로 객체 생성하는 것을 원천 차단
    2. static 변수: 자기 자신의 인스턴스를 저장할 정적 필드 선언
    3. getInstance(): 유일한 객체를 반환하는 정적 메서드 제공

🌐 Object 클래스의 메서드 재정의

  • toString(): 객체를 문자열로 표현할 때 사용하며, 보통 필드 값을 확인하는 용도로 오버라이딩함
  • equals(): 두 객체의 주소값이 아닌 실제 데이터 내용을 비교하기 위해 반드시 재정의 필요

🛠️ 실습 메모 및 팁

  • 로또 예제 복습: Math.random()을 활용한 중복 제거 로직은 배열과 반복문 제어의 핵심
  • HTML 레이아웃: 랜드로바 페이지 실습을 통해 float 정렬의 한계와 시멘틱 구조의 중요성 재확인
  • 상수 초기화: final 멤버 변수는 선언 시 초기화하거나 생성자를 통해 단 한 번만 초기화 가능