2026년 02월 18일

🎯 Java 인스턴스 멤버 — 객체에 소속된 필드와 메서드

Java Spring Boot
Cover Image

🎯 Java 인스턴스 멤버 — 객체에 소속된 필드와 메서드

핵심 개념 : 인스턴스 멤버는 객체에 소속되어 있어 객체 생성 후에만 사용 가능하다. 정적 멤버는 클래스에 고정되어 객체 없이도 사용 가능하다.


1️⃣ 인스턴스 멤버 vs 정적 멤버

구분소속사용 조건키워드
인스턴스 멤버객체객체 생성 후 사용 가능(없음)
정적 멤버클래스객체 없이도 사용 가능static

2️⃣ 인스턴스 멤버 선언

public class Car {
    // 인스턴스 필드
    int gas;
    
    // 인스턴스 메서드
    void setSpeed(int speed) { ... }
}

인스턴스 멤버는 반드시 객체를 생성한 후 사용할 수 있다.

Car myCar = new Car();      // 객체 생성
myCar.gas = 10;             // 인스턴스 필드 접근
myCar.setSpeed(60);         // 인스턴스 메서드 호출

3️⃣ 메모리 구조 — 필드는 객체마다, 메서드는 공유

Car myCar = new Car();
myCar.gas = 10;
myCar.setSpeed(60);

Car yourCar = new Car();
yourCar.gas = 20;
yourCar.setSpeed(80);

메모리 배치

영역저장 내용특징
StackmyCar, yourCar 참조변수각 변수는 Heap의 객체 주소 저장
HeapmyCar 객체 (gas=10), yourCar 객체 (gas=20)필드는 객체마다 별도 존재
메서드 영역setSpeed() 메서드 코드메서드는 공유 (중복 저장 방지)

💡 왜 메서드는 공유할까?
메서드는 코드 덩어리다. 객체마다 저장하면 메모리 낭비가 심하므로 한 곳에 두고 공유하되, 객체 없이는 사용 못하도록 제한을 건다.


4️⃣ this 키워드 — 나 자신을 가리키는 참조

this현재 객체 자신을 가리킨다. 주로 두 가지 상황에서 사용한다.

사용 이유 ① — 매개변수명과 필드명이 같을 때

class Car {
    String model;
    int speed;
    
    Car(String model) {
        this.model = model;  // this 생략 불가 (구분 필요)
    }
    
    void setSpeed(int speed) {
        this.speed = speed;  // this 생략 불가
    }
}
매개변수 model  →  this.model (필드)로 대입
매개변수 speed  →  this.speed (필드)로 대입

사용 이유 ② — 명시적으로 현재 객체 강조

void run() {
    this.setSpeed(100);  // this 생략 가능 (하지만 명확성 위해 사용)
    System.out.println(this.model + "가 달립니다.");
}

5️⃣ 실전 예시

public class Car {
    String model;
    int speed;
    
    Car(String model) {
        this.model = model;
    }
    
    void setSpeed(int speed) {
        this.speed = speed;
    }
    
    void run() {
        this.setSpeed(100);
        System.out.println(this.model + "가 달립니다.(시속:" + this.speed + "km/h)");
    }
}
Car myCar = new Car("포르쉐");
Car yourCar = new Car("벤츠");

myCar.run();   // 포르쉐가 달립니다.(시속:100km/h)
yourCar.run(); // 벤츠가 달립니다.(시속:100km/h)

📌 핵심 요약

개념설명
인스턴스 멤버객체에 소속, 객체 생성 후 사용 가능
필드객체마다 별도 존재 (Heap)
메서드메서드 영역에서 공유 (중복 방지)
this현재 객체를 가리키는 참조
this 필수 사용매개변수명 = 필드명일 때
← 목록으로 돌아가기