인스턴스 (instance) 멤버
객체(인스턴스) 를 생성한 후 사용할 수 있는 필드와 메소드를 의미한다.
(인스턴스 필드, 인스턴스 메소드라고 불린다.)
이전에 작성한 모든 필드와 메소드는 인스턴스 멤버이다.
인스턴스 필드와 메소드는 객체에 소속된 멤버이기 때문에 객체 없이는 사용할 수 없다.
ex) Car 클래스에 gas 필드와 setSpeed( ) 메소드가 아래와 같이 선언
public class Car {
//필드
int gas;
//메소드
void setSpeed(int speed) { . . . }
}
gas 필드와 setSpeed( ) 메소드는 인스턴스 맴버이기 때문에 외부 클래스에서 사용하기 위해서는
먼저 Car 객체(인스턴스)를 생성하고 참조 변수 myCar, yourCar 로 접근해야 한다.
Car myCar = new Car();
myCar.gas = 10;
myCar.setSpeed(60);
Car yourCar = new Car();
yourCar.gas = 20;
yourCar.setSpeed(60);
위의 코드 실행 후 메모리의 모습은 아래와 같다.
인스턴스 필드 gas는 객체마다 따로 존재하고,
인스턴스 메소드 setSpeed( ) 는 객체마다 존재하지 않고, 메소드 영역에 저장되고 공유된다.
this (객체 자신)
객체 외부에서 인스턴스 멤버에 접근하기 위해 참조 변수를 사용하는 것처럼
객체 내부에서도 인스턴스 멤버에 접근하기 위해 this를 사용할 수 있다. (객체 자신 = "this")
this.model : 자신이 가지고 있는 model 필드 의미
this 는 주로 생성자와 메소드의 매개 변수 이름이 필드와 동일한 경우,
인스턴스 멤버인 필드임을 명시할 때 사용된다.
Car(String model) {
this.model = model;
}
void setModel(String model) {
this.model = model;
}
매개 변수 model 값을 필드 model에 저장한다.
ex) Car.java : 인스턴스 멤버와 this
public class Car {
//필드
String model;
int speed;
//생성자
Car(String model) {
this.model = model; // 생성자의 매개 변수로 온 값을 필드에 저장
}
//메소드
void setSpeed(int speed) {
this.speed = speed;
}
void run() {
for(int i = 10; i <= 50; i += 10) {
this.setSpeed(i);
System.out.println(this.model + "달립니다. (시속 :" + this.speed + "km/h)");
}
}
}
CarExample.java : 실행 클래스
public class CarExample {
public static void main(String[] args) {
Car myCar = new Car("포르쉐");
Car yourCar = new Car("벤츠");
myCar.run();
yourCar.run();
}
}
728x90
'Java 기본 문법 - 참조 서적 [이것이 자바다 - 한빛미디어] > 4. 객체지향 프로그래밍' 카테고리의 다른 글
8. Java 자바 - final 필드와 상수 (2) | 2020.05.18 |
---|---|
7. Java 자바 - 정적 멤버와 static, 싱글톤(singleton) (0) | 2020.05.18 |
5. Java 자바 - 클래스의 구성 멤버 [ 메소드 ] (0) | 2020.05.18 |
4. Java 자바 - 클래스의 구성 멤버 [ 생성자 ] (4) | 2020.05.16 |
3. Java 자바 - 클래스의 구성 멤버 [ 필드 ] (3) | 2020.05.15 |