본문 바로가기

Languages/JAVA

[JAVA] 클래스의 모든 것 #3 - 클래스의 this

클래스를 알아봅시다! #3 😉


오늘은 클래스에서 this 사용법을 알아봅시다!

 

[ 자바 클래스 링크 ]

1. [JAVA] 클래스의 모든 것 #1 - 클래스의 개념과 용도
2. [JAVA] 클래스의 모든 것 #2 - 클래스의 static


 

this는 바로 자신의 객체의 참조값을 가리킨다고 보시면 됩니다. 자세한 내용은 예제에서 알아봅시다!


public class Car {

	public String name;
	public String brand;
	public void drive() {
		System.out.println("부릉부릉 달려요!");
	}
	public void showBrand() {
		/*
		 * [ this에 대한 이해 ]
		 * 
		 * 클래스 설계 단계에서는 잘 모르겠지만 이 클래스로 객체를 생성했을때
		 * 할당 받는 바로 자신의 객체의 참조값을 가리킨다.
		 * 
		 */
		System.out.println(this.brand);
		
	}
	
}

먼저 Car 클래스를 만들어줍니다.

자세히 보시면 showBrand()안에 System.out.println(this.brand);라는 것이 있죠?

여기서 this는 바로 자신의 객체의 참조값을 가리킵니다. 즉, this.brand는 이 객체의 brand를 가리킵니다.


Car car1 = new Car();
Car car2 = new Car();

car1.brand = "현대";
car2.brand = "기아";
car2.brand = "현대";

car1.showBrand();
car2.showBrand();

이렇게 자신의 brand를 출력해줍니다.


다른 예제를 보겠습니다!

public class Gun {
	
	public Gun fire() {
		System.out.println("빵~");
		return this;
	}
}

Gun이라는 클래스에 fire 메소드를 만들어주고 this를 return 해주었습니다.

this를 리턴한것은 자기자신의 참조값을 리턴하였다고 보면됩니다.

 


이제 main클래스에서 Gun 클래스를 사용해봅시다.

//객체를 생성해서 동일한 메소드를 여러번 호출하기
Gun g = new Gun();
g.fire();
g.fire();
g.fire();

System.out.println();

//메소드 안에서 this를 리턴하는 메소드의 사용
new Gun().fire().fire().fire();

fire은 자기자신의 참조값을 리턴하게 때문에 마지막 줄과 같이 계속해서 fire을 사용할수있게됩니다.


 

new Gun().fire().fire().fire();은 빵을 3번 출력한 모습을 볼 수 있습니다.