[TIL] 객체지향 이해

김홍기·2026년 3월 18일

Java 문법

목록 보기
1/9

JVM 메모리 영역

  1. Method Area
    -클래스 정보 저장공간
    -프로그램 시작 시 모든 파일(.java)의 데이터가 저장 (실행 시점 한번)
    -클래스의 메서드 정보, 스태틱 변수등이 저장
    -모든 객체가 공유하는 공용 공간

  2. Stack Area
    -메서드 실행 시 사용되는 공간
    -선입후출(LIFO)구조
    -메서드 실행이 끝나면 스택에서 제거

  3. Heap Area
    -객체가 생성되어 저장되는 공간
    -객체의 실제 데이터가 저장되고 데이터의 주소는 stack영역에 저장

  4. 가비지 컬렉터(Garbage Collector)
    -Java의 사용하지 않는 객체를 자동으로 제거하는 기능

래퍼클래스(Wrapper Class)

  • 기본자료형을 객체로 감싸는 클래스
  • 래퍼클래스를 사용하는 이유
    • 기본형은 객체처럼 속성, 기능을 가질 수 없다.
    • 객체는 기능을 제공한다.
    • 기본형을 감싼 객체를 만들어 편리하게 데이터처리 할 수 있다.

static

  • 모든 객체가 함께 사용하는 변수나 메서드 만들 때 사용
  • 객체(인스턴스)를 만들지 않아도 클래스 이름만으로 바로 사용 가능
  • static 변수와 메서드는 한번만 생성, Method 영역에 저장
    ex) 공용 게시판
구분클래스 멤버 (static)인스턴스 멤버
소속클래스객체
생성 필요❌ 없음✅ 필요
사용Student.변수객체.변수
특징공유각각 다름

final

  • 용도
    • 변수 : 변경 불가하게 만듦
    • 클래스 : 상속할 수 없게 만듦
    • 메서드 : 수정할 수 없게 만듦(오버라이딩 불가)

1. 상수

  • 변하지 않고 항상 일정한 값을 갖는 수
  • Java 에서는 대문자로 표현하는 것이 관례!
  • 실행 중 절대 변경되어선 안되므로 static final 키워드 사용
  • static으로 선언된 변수는 프로그램 시작 시 한번만 초기화

2. 불편객체 (Immutable Object)

  • 내부 상태를 변경할 수 없는 객체
  • 속성(프로퍼티, 필드)에 활용
  • 세터없이 설게
  • 변경이 필요할 경우 새로운 객체 생성
 public final class Circle {
    public static final double PI = 3.14159;
    private final double radius;

    public Circle(double radius) {
        this.radius = radius;
    }

    // ✅ 반지름이 다른 새로운 Circle 생성 (불변 객체 유지)
    public Circle changeRadius(double newRadius) {
        return new Circle(newRadius); 
        // 생성자 호출: 기존 객체 변경 X, 새 객체 생성
    }}

인터페이스(Interface)

  • 클래스가 따라야할 최소한의 공통 규칙을 정의

  • 설계 표준

public interface Config {
    int POPULATION = 100;} // public static final 로 선언됩니다.
  • public statuc final 로 선언되기 때문에 구현체 없이 활용 가능~
profile
개발자 기록용

0개의 댓글