Work & Study/JAVA (& 혼공자Java)

자바(Java) - 인스턴스 멤버와 정적 멤버1 (인스턴스멤버 & this)

a.k.a DUKI 2020. 10. 15. 20:53
728x90
반응형

클래스에 선언된 필드와 메소드가 모두 객체 내부에 포함되는 것은 아니다.

객체가 있어야 사용가능한 멤버가 있고, 객체가 없어도 사용가능한 멤버가 있다.

 

인스턴스 멤버

객체 마다 가지고 있는 멤버

  • 인스턴스 필드: 힙 영역에 객체마다 가지고 있는 멤버, 객체마다 다른 데이터를 저장
  • 인스턴스 메소드: 객체가 있어야 호출가능한 메소드                       클래스 코드(메소드 영역)에 위치하지만, 이해하기 쉽도록 객체 마다 가지고 있는 메소드라고 생각해도 된다.

정적 멤버

객체와 상관없는 멤버, 클래스 코드(메소드 영역)에 위치

  • 정적 필드 및 상수: 객체 없이 클래스만으로도 사용 가능한 필드
  • 정적 메소드: 객체가 없이 클래스만으로도 호출 가능한 메소드

클래스 내부의 다른 메소드에서 호출할 경우에는 단순히 메소드 이름으로 호출이 가능하다.

클래스 외부의 메소드를 호출하는 경우 클래스로부터 객체를 생성한 뒤 참조 변수를 이용해서 메소드를 호출해야 한다.

 

 

인스턴스(instance) 멤버

객체를 생성한 후 사용할 수 있는 필드와 메소드 이다.

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

 

인스턴스 멤버 선언

Car 클래스에 인스턴스 필드 gas와 인스턴스 메소드 setSpeed()를 선언

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

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

Car myCar() = new Car();
myCar.gas = 10;
MyCar.setSpeed(50);

혼공자 유툽 참고

 

this

객체 내에서 인스턴스 멤버에 접근하기 위해 사용한다.

생성자와 메소드의 매개 변수 이름이 필드와 동일할 경우, 필드 임을 지정하기 위해 주로 사용한다.

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

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

 

예시1) 인스턴스 멤버 & 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 = 50; i <= 100; i += 20) {
			this.setSpeed(i);
			System.out.println(this.model + "가 달립니다.(시속: " + this.speed + "km/h)");
		}
	}
}
public class CarEx {

	public static void main(String[] args) {
		Car myCar = new Car("포르쉐");
		Car yourCar = new Car("마세라티");

		myCar.run();
		yourCar.run();

	}
}

 

 

 


※용어 정리

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

  • this: 객체 내부에서도 인스턴스 멤버에 접근하기 위해 this를 사용.

    • ex)  this.model은 자신이 가지고 있는 model필드라는 뜻이다.

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

 

본 내용은 #혼자공부하는자바 책을 참고해 공부하려 작성했습니다.
728x90
반응형