📝 오늘의 강의 요약
핵심 키워드: 상속(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)
- 목적: 특정 클래스의 객체를 단 하나만 생성하여 어디서든 공유하도록 보장
- 구현 핵심:
- private 생성자: 외부에서 new로 객체 생성하는 것을 원천 차단
- static 변수: 자기 자신의 인스턴스를 저장할 정적 필드 선언
- getInstance(): 유일한 객체를 반환하는 정적 메서드 제공
🌐 Object 클래스의 메서드 재정의
- toString(): 객체를 문자열로 표현할 때 사용하며, 보통 필드 값을 확인하는 용도로 오버라이딩함
- equals(): 두 객체의 주소값이 아닌 실제 데이터 내용을 비교하기 위해 반드시 재정의 필요
🛠️ 실습 메모 및 팁
- 로또 예제 복습: Math.random()을 활용한 중복 제거 로직은 배열과 반복문 제어의 핵심
- HTML 레이아웃: 랜드로바 페이지 실습을 통해 float 정렬의 한계와 시멘틱 구조의 중요성 재확인
- 상수 초기화: final 멤버 변수는 선언 시 초기화하거나 생성자를 통해 단 한 번만 초기화 가능