본문 바로가기
Programing/JAVA (& 혼공자Java)

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

by a.k.a DUKI 2020. 10. 15.
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
반응형

댓글