본문으로 바로가기

[Java] 인스턴스 멤버

category Backend/객체 지향 프로그래밍 2022. 4. 8. 14:09

1. 인스턴스 멤버

  • 클래스로부터 만들어진 객체를 해당 클래스의 인스턴스라고 합니다.
  • 인스턴스 멤버란 객체(인스턴스)를 생성한 후 사용할 수 있는 필드와 메소드

 

예시

public class Computer {
    // 필드
    long serialNumber;

    // 메소드
    public long getSerialNumber() {
        return serialNumber;
    }

    public void setSerialNumber(long serialNumber) {
        this.serialNumber = serialNumber;
    }
}
// 인스턴스 생성
Computer computer = new Computer();

// 인스턴스 필드
long serialNumber = computer.serialNumber; 

// 인스턴스 메소드
computer.setSerialNumber(12345);
serialNumber = computer.getSerialNumber();

 

2. 인스턴스 메모리 할당

같은 1개의 클래스의 인스턴스를 N개 생성할 경우 메모리에

인스턴스 필드는 객체마다 따로 존재(힙 영역)하고 

인스턴스 메소드는 객체마다 존재하지 않고 메소드 영역에 저장되고 공유됩니다.

 

// 인스턴스 생성
Computer computer1 = new Computer();
Computer computer2 = new Computer();

// 인스턴스 필드
long serialNumber1 = computer1.serialNumber;
long serialNumber2 = computer2.serialNumber;

// 인스턴스 메소드
computer1.setSerialNumber(12345);
computer2.setSerialNumber(54321);

 

인스턴스 멤버 메모리 할당

 

3. this

  • this를 이용하여 객체는 자신의 인스턴스 멤버에 접근할 수 있습니다.
  • this는 주로 생성자와 메소드의 매개 변수 이름이 필드와 동일한 경우, 인스턴스 멤버인 필드임을 명시하고자 할 때 사용됩니다.
  • 매개 변수 이름을 필드 이름과 동일하게 하는 것이 관례입니다.
public class Computer {
    // 필드
    long serialNumber;

    // 생성자
    public Computer(long serialNumber) {
        this.serialNumber = serialNumber;
    }

    // 메소드
    public long getSerialNumber() {
        return serialNumber;
    }

    public void setSerialNumber(long serialNumber) {
        this.serialNumber = serialNumber;
    }
}