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

Day 8 (10/29) - Java 클래스 기초 및 캡슐화

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

📝 오늘의 강의 요약

핵심 키워드: 캡슐화(Encapsulation), 접근 제어자, 정적 멤버(Static), 상수(Final), 시멘틱 구조, CSS 포지셔닝

  • Java: 클래스 구성 요소의 접근 제어 및 객체지향의 핵심인 캡슐화 이해
  • HTML/CSS: 체크박스를 활용한 탭 메뉴 구현 및 절대/상대 위치 지정 학습
  • 추천 도서: 《객체지향의 사실과 오해》 (캡슐화 및 객체지향적 사고방식 함양 추천)

☕ Java 클래스 및 객체지향 심화

1. 캡슐화(Encapsulation)와 접근 제어자

  • 개념: 외부의 잘못된 접근으로부터 데이터 보호 및 내부 로직 은닉
  • 접근 제어자 종류:
제어자 접근 범위 비고
public 모든 패키지, 모든 클래스 제한 없음
protected 같은 패키지 + 자식 클래스 상속 관계에서 유효
default 같은 패키지 내 클래스 별도 키워드 없음
private 해당 클래스 내부만 캡슐화의 핵심, Getter/Setter 필수

2. Getter와 Setter 메서드

  • 필드(멤버 변수): 가급적 private으로 선언하여 직접 접근 차단
  • 데이터 수정(Setter): 매개변수 검증 후 값 대입 (예: 음수 나이 차단)
  • 데이터 읽기(Getter): 필드 값을 외부로 안전하게 전달
  • this 키워드: 클래스 내부 필드와 메서드 매개변수의 이름이 같을 때 구분자로 사용

3. 인스턴스(Instance) vs 정적(Static) 멤버

  • 인스턴스 멤버: new 연산자로 객체 생성 후 사용 가능한 변수 및 메서드
  • 정적 멤버(Static): 객체 생성 없이 클래스명으로 즉시 접근 가능 (메모리 로드 시 자동 생성)
  • 정적 메서드 주의사항: 메서드 내부에서 인스턴스 필드나 인스턴스 메서드 사용 불가

4. 상수(Constant) 선언

  • 문법: static final 타입 상수명 = 초기값;
  • 특징: 프로그램 전체에서 공유되며 변경 불가능한 값
  • 명명 규칙: 모두 대문자로 작성하며 단어 사이는 언더바(_)로 연결

🌐 HTML & CSS 시멘틱 레이아웃

1. 고급 CSS 선택자 및 기법

  • 가상 클래스 활용:
    • p:first-child: 첫 번째 자식 요소 선택
    • nth-of-type(n): 동일 타입 중 n번째 요소 선택
  • 상태 선택자 조합:
    • input[type="checkbox"]:checked ~ #view: 체크박스 상태에 따라 특정 요소 노출 제어

2. 레이아웃 핵심 속성 정리

  • Position (위치 지정):
    • relative: 원래 있어야 할 위치 기준
    • absolute: 부모 요소(상위 포지션 요소) 기준 자유 배치
  • Overflow (넘침 처리):
    • hidden: 박스를 벗어나는 콘텐츠 숨김
    • border-radius 적용 시 함께 사용하여 모서리 마감 처리
  • Display (노출 제어):
    • none: 공간까지 삭제하며 숨김
    • block: 한 줄 전체 차지하며 노출

🗂️ 자바 메인 메서드 구조 분석

public static void main(String[] args)

  • public: 가상머신(JVM)이 어디서든 호출 가능하도록 설정
  • static: 객체 생성 없이 프로그램 시작 시 즉시 실행
  • void: 메서드 실행 후 반환하는 값이 없음
  • String[] args: 실행 시 입력받는 문자열 배열 매개변수

💡 추가 팁

  1. 싱글톤 패턴(Singleton): 객체를 단 하나만 생성하도록 보장하는 기법으로, private 생성자와 static 메서드를 결합하여 구현 가능
  2. 함수 오버로딩: 동일한 메서드 이름으로 매개변수의 타입이나 개수만 다르게 하여 여러 개 정의 가능