📘 자바 복습 정리 (0706)
✅ 1. 접근 제어자와 캡슐화
public: 어디서든 접근 가능
protected: 같은 패키지 or 상속 관계에서만 접근 가능
default(생략): 같은 패키지에서만 접근 가능
private: 해당 클래스 내에서만 접근 가능
👉 캡슐화
- 필드를
private으로 숨기고, getter/setter로 접근 제어
- 잘못된 데이터 입력 방지 가능
✅ 2. static, final 키워드
static: 공유 자원, 클래스 로딩 시 메모리에 할당됨
final: 변경 불가능한 값이나 구조
final 변수: 상수
final 메서드: 오버라이딩 불가
final 클래스: 상속 불가
✅ 3. Singleton 패턴
- 객체를 단 하나만 생성하여 공유하는 패턴
- 외부에서 생성 불가 → 내부에서 1회만 생성 후
getInstance()로 접근
private static Singleton instance = new Singleton();
public static Singleton getInstance() { return instance; }
✅ 4. enum (열거형)
- 고정된 상수 집합 정의용 클래스
- 생성자와 메서드 포함 가능
public enum OrderStatus {
READY("준비 완료", 30),
COMPLETE("완료", 0);
}
- 각 상태마다 설명, 시간 등의 속성 설정 가능
✅ 5. 추상 클래스 & 인터페이스
추상 클래스
- 실체 없이 껍데기 역할 (
abstract)
- 일부 구현 + 강제 메서드 정의 가능
인터페이스
implements로 다중 구현 가능
- 모든 메서드는 기본
public abstract
default 메서드로 기본 구현 제공 가능
✅ 6. 예외 처리
기본 구조
try {
} catch (Exception e) {
} finally {
}
사용자 정의 예외
public class MyException extends RuntimeException {
public MyException(String msg) { super(msg); }
}
예외 전파
✅ 7. Object 클래스 재정의
equals() 오버라이딩
toString() 오버라이딩
✅ 8. String 클래스
주요 메서드
length(), charAt(), indexOf(), lastIndexOf()
substring(), replace(), split()
toUpperCase(), toLowerCase(), trim()
✅ 9. Wrapper 클래스
- 기본 타입 → 객체형으로 다루기 위함
Integer, Double, Boolean 등
- 오토박싱/언박싱 자동 지원
✅ 10. java.time 패키지
날짜 및 시간 클래스
LocalDate, LocalTime, LocalDateTime
now(), of(), plusDays(), minusDays() 등
날짜 차이 계산
Period.between(): 연,월,일 단위
ChronoUnit.DAYS.between(): 일 수 단위
✅ 11. Generic
public class Box<T> {
private T item;
...
}
Box<String>, Box<Integer> 등 타입 안정성 확보
✅ 12. 커스텀 ArrayList 구현
주요 기능
push(), get(index), remove(index)
indexOf(value), contains(value)
- 내부적으로
Object[] 배열로 관리
- 배열 크기 초과 시 자동 확장
✅ 요약 정리표
| 주제 | 핵심 내용 |
|---|
| 접근제어자 | private, public, protected, default |
| 캡슐화 | private + getter/setter 조합 |
| static/final | 공유/불변 자원 관리 |
| Singleton | 단 하나의 객체 사용 |
| enum | 고정 상수 + 설명/속성 관리 |
| 추상클래스 | 일부 구현 + 강제 규칙 |
| 인터페이스 | 다중 구현, 규약 제공 |
| 예외 처리 | try-catch-finally, throws |
| Object 메서드 | equals(), toString() 재정의 |
| String 메서드 | 문자열 처리 기능들 |
| Wrapper | 기본형 ↔ 객체형 변환 |
| 날짜 API | LocalDate, Period 등 |
| Generic | 타입 안정성 & 재사용성 |
| 커스텀 리스트 | push/remove/확장 구현 |