프로그래밍/JAVA

자바 - this, this메서드(4)

개발자 덕구🐾 2021. 8. 21. 14:55
728x90

this를 어떨때에 쓸까 

1학년 수업 - 객체지향프로그래밍2에서 this를 배웠는데 왜써야하는지 이해를 못했던 기억이 있다.

java를 공부하면서 완전히 이해했다.

 

 

 

this

this에는 가릴킬때 사용하는 this와 호출할때 사용하는 this메소드가 있다.

 

 

 

1) this

 

-> 생성한 객체 자신을 가리킨다!

class Circle{
	private double radius;   //멤버변수
	public Circle(double radius) {  
		this.radius = radius;
	}
}

멤버변수(인스턴스 변수)인 radius와 생성자의 인수로 받는 radius가 이름이 동일한것을 확인할수있다.

이때 인수와 멤버변수를 구별할수있도록 도와주는 것이 this이다.

 

this는 생성자로 생성한 객체 자신을 가리키는 "참조변수"이다. 객체의 주소가 저장되어있다.

즉 "."을 이용해 객체의 멤버변수인 radius에 접근할수있다!

 

 

 

 

 

2) this() // this메소드

 

-> 매개변수가 있는 기존의 생성자를 호출한다

 

class Circle{
	
	private double radius;
	private String color;
	
	public Circle(double radius, String color) {
		this.radius = radius;
        this.color = color;
	}
	
	public Circle(double radius) { //인수가 하나만 들어올때 
		this.radius = radius;  
		this.color = "파랑";
	}
	
    public Circle(String color) { //인수가 하나만 들어올때 
		this.radius = 10.0; 
		this.color = color;
	}
	
}

위의 코드 주석과 같이 생성자 오버로딩할때에 

 

this.radius = radius;  
this.color = "파랑"; 

 

이처럼 두줄로 주어지지않은 변수를 기본값으로 설정해야하는 코드를 작성해야할때가 있다.

이때 기존에 매개변수가 존재하는 기존 생성자를 this메서드를 이용하여 호출할 수 있다.

 

 

class Circle{
	
	private double radius;
	private String color;
	
	public Circle(double radius, String color) {
		this.radius = radius;
        this.color = color;
	}
	
	public Circle(double radius) { //인수가 하나만 들어올때 
		this(radius, "파랑");
	}
	
    public Circle(String color) { //인수가 하나만 들어올때 
    	this(10.0, color);
	}
	
}

이런식으로 코드중복을 막을 수 있다.

반응형