Java
인스턴스 멤버와 this

인스턴스(instance) 멤버란 객체(인스턴스)를 생성한 후 사용할 수 있는 필드와 메소드를 말하는데, 이들을 각각 인스턴스 필드,인스턴스 메소드라고 부른다.

인스턴스 필드와 메소드는 객체에 소속된 멤버이기 때문에 객체 없이는 사용할 수 없다.


public class Car{
//필드
int gas;
//메소드
void setSpeed(int speed) {...}
}


Car클래스에 gas필드와 setSpeed() 메소드가 다음과 같이 선언되어 있다고 보자.

gas 필드와 setSpeed()메소드는 인스턴스 멤버이기 때문에 외부 클래스에서 사용하기 위해서는 우선 Car 객체(인스턴스)를 생성하고 참조변수 myCar 또는 yourCar로 접근해야한다.


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


객체 외부에서 인스턴스 멤버에 접근하기 위해 참조 변수를 사용하는 것과 마찬가지로 객체 내부 에서도 인스턴스 멤버에 접근하기 위해 this를 사용할 수 있다.


따라서 this.model은 자신이 가지고 있는 model필드 라는 뜻이다.

this는 주로 생성자와 메소드의 매개 변수 이름이 필드와 동일한 경우, 인스턴스 멤버인 필드임을 명시하고자 할 때 사용된다.


Car(String model) {
this.model=model;
}
void setModel(String model) {
this.model=model;
}


[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] 인스턴스 멤버와 this
public class CarExample {
public static void main(String[] args) {
Car myCar = new Car("포르쉐");
Car yourCar = new Car("벤츠");
myCar.run();
yourCar.run();
}
}

댓글 0