๐ Java์ this๋?
Java์์ 'this' ํค์๋๋ ํ์ฌ ๊ฐ์ฒด์ ์ฐธ์กฐ๋ฅผ ๋ํ๋ด๋ ํน์ํ ๋ณ์์ ๋๋ค.
'this'๋ Instance method์ ์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ก ํญ์ ์กด์ฌํฉ๋๋ค.
๐ฉท this์ ํน์ง
1. ํ์ฌ ๊ฐ์ฒด ์ฐธ์กฐ
- 'this' ํค์๋๋ ํ์ฌ ๋ฉ์๋๋ ์์ฑ์๊ฐ ์ํ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํฉ๋๋ค.
- ์ด๋ ๋ฉ์๋์ ์์ฑ์์์ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ์ฐธ์กฐ ๋ณ์์ ๋๋ค.
2. ์ธ์คํด์ค ๋ณ์์ ๋ก์ปฌ ๋ณ์์ ๊ตฌ๋ณ
- ์ธ์คํด์ค ๋ณ์์ ๋ก์ปฌ ๋ณ์๊ฐ ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง ๋,
- this๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์คํด์ค ๋ณ์๋ฅผ ๋ช ํํ ๊ตฌ๋ณํ ์ ์์ต๋๋ค.
3. ํ์ฌ ๊ฐ์ฒด์ ๋ฉ์๋ ํธ์ถ
- this๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ ๊ฐ์ฒด์ ๋ค๋ฅธ ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค.
- ๋ณดํต ์๋ต ๊ฐ๋ฅํ์ง๋ง ๋ช ํ์ฑ์ ์ํด ์ฌ์ฉํ ์ ์์ต๋๋ค.
4. ํ์ฌ ๊ฐ์ฒด์ ์์ฑ์ ํธ์ถ
- ์์ฑ์์์ ๋ค๋ฅธ ์์ฑ์๋ฅผ ํธ์ถํ ๋ this๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ด๋ ์์ฑ์ ์ค๋ฒ๋ก๋ฉ์ ํตํด ์ด๊ธฐํ ๋ก์ง์ ์ฌ์ฌ์ฉํ ๋ ์ ์ฉํฉ๋๋ค
5. ๋ฉ์๋ ์ฒด์ด๋
- ๋ฉ์๋๊ฐ this๋ฅผ ๋ฐํํ๋ฉด, ๋ฉ์๋ ์ฒด์ด๋์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ์ด๋ ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ฐ์ฑ์ ๋์ฌ์ค๋๋ค.
this์ ์ฌ์ฉ๋ฒ์ ์์ ์ ํจ๊ป ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค.
์์ 1 ) ์ธ์คํด์ค ๋ณ์์ ๋ก์ปฌ ๋ณ์์ ๊ตฌ๋ณ
public class Example {
private int value;
public Example(int value) {
this.value = value; // this.value๋ ์ธ์คํด์ค ๋ณ์, value๋ ๋งค๊ฐ๋ณ์
}
public void setValue(int value) {
this.value = value; // this.value๋ ์ธ์คํด์ค ๋ณ์, value๋ ๋งค๊ฐ๋ณ์
}
public int getValue() {
return this.value; // this๋ ์๋ต ๊ฐ๋ฅ
}
}
์์ 2 ) ์ธ์คํด์ค ๋ณ์์ ๋ก์ปฌ ๋ณ์์ ๊ตฌ๋ณ
public class Example {
public void methodA() {
System.out.println("methodA");
}
public void methodB() {
this.methodA(); // this๋ฅผ ์ฌ์ฉํ์ฌ methodA ํธ์ถ
}
}
์์ 3 ) ํ์ฌ ๊ฐ์ฒด์ ์์ฑ์ ํธ์ถ
public class Example {
private int value1;
private int value2;
public Example(int value1) {
this(value1, 0); // this๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๋ฒ์งธ ์์ฑ์ ํธ์ถ
}
public Example(int value1, int value2) {
this.value1 = value1;
this.value2 = value2;
}
}
์์ 4 ) ๋ฉ์๋๋ ์์ฑ์์์ ํ์ฌ ๊ฐ์ฒด ๋ฐํ
public class Example {
private int value;
public Example setValue(int value) {
this.value = value;
return this; // this๋ฅผ ๋ฐํ
}
public void printValue() {
System.out.println(this.value);
}
public static void main(String[] args) {
Example example = new Example();
example.setValue(10).printValue(); // ๋ฉ์๋ ์ฒด์ด๋
}
}
์์ 5) ๋ฉ์๋ ์ฒด์ด๋
public class Person {
private String name;
private int age;
private String address;
public Person setName(String name) {
this.name = name;
return this;
}
public Person setAge(int age) {
this.age = age;
return this;
}
public Person setAddress(String address) {
this.address = address;
return this;
}
public void displayInfo() {
System.out.println("Name: " + name + ", Age: " + age + ", Address: " + address);
}
public static void main(String[] args) {
Person person = new Person();
person.setName("pipi").setAge(5).setAddress("Apeach House").displayInfo();
}
}
- set ๋ฉ์๋์์ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๊ธฐ๋๋ฌธ์, ํ ์ค๋ก ์์ฑ์ด ๊ฐ๋ฅํด์ง๋๋ค.
๐ this์ ์ฅ์
1. ๋ช ํ์ฑ :
- this๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ์ฝ๋์ ๋ช ํ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
- ํนํ ์ธ์คํด์ค ๋ณ์์ ๋ก์ปฌ ๋ณ์๊ฐ ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ๋ ์ ์ฉํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, ์์ฑ์๋ ๋ฉ์๋ ๋ด์์ ์ธ์คํด์ค ๋ณ์๋ฅผ ๋ช ํํ๊ฒ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
2. ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ :
- ์์ฑ์ ์ค๋ฒ๋ก๋ฉ์์ this๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ์์ฑ์๋ฅผ ํธ์ถํจ์ผ๋ก์จ ์ด๊ธฐํ ๋ก์ง์ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ด๋ ์ฝ๋ ์ค๋ณต์ ์ค์ด๊ณ ์ ์ง๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
3. ๋ฉ์๋ ์ฒด์ด๋ :
- this๋ฅผ ๋ฐํํ๋ ๋ฉ์๋๋ฅผ ์์ฑํ์ฌ ๋ฉ์๋ ์ฒด์ด๋์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ์ด๋ ๊ฐ์ฒด ์ค์ ์ ์ง๊ด์ ์ผ๋ก ํ ์ ์๊ฒ ํด์ค๋๋ค.
4. ๋์ ๋ฐ์ธ๋ฉ :
- this๋ ๋์ ๋ฐ์ธ๋ฉ(dynamic binding)์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์ด๋ ๋คํ์ฑ์ ํ์ฉํ ๋ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, ์์ ํด๋์ค์์ ์ค๋ฒ๋ผ์ด๋๋ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋, this๋ ์ค์ ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.
๋์ ๋ฐ์ธ๋ฉ์ ์์ ๋ถ๋ถ์์ ๋ค์ ์ ํํ๊ฒ ๋ค๋ฃฐ ์์ ์
๋๋ค.
" ์์ฝ "
- this๋ ํ์ฌ ๊ฐ์ฒด์ ์ฐธ์กฐ๋ฅผ ๋ํ๋ ๋๋ค.
- ์ธ์คํด์ค ๋ณ์์ ๋ก์ปฌ ๋ณ์๋ฅผ ๊ตฌ๋ณํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
- ํ์ฌ ๊ฐ์ฒด์ ๋ค๋ฅธ ๋ฉ์๋๋ ์์ฑ์๋ฅผ ํธ์ถํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
- ๋ฉ์๋ ์ฒด์ด๋์ ๊ฐ๋ฅํ๊ฒ ํ๊ธฐ ์ํด ๋ฉ์๋๋ ์์ฑ์์์ ํ์ฌ ๊ฐ์ฒด๋ฅผ ๋ฐํํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
this ํค์๋๋ ์๋ฐ ํ๋ก๊ทธ๋๋ฐ์์ ๋งค์ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
์์ ์ฝ๋๋ฅผ ์ง์ ์์ฑํด ๋ณด๋ฉด์ ์ดํดํด ๋ณด์ธ์!
์ง๋ฌธ์ ์ธ์ ๋ ์ง ๋๊ธ์ ๋จ๊ฒจ์ฃผ์ธ์.
๐ฉต๐ฐ๐ฉต
'โJava' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java ์ดํดํ๊ธฐ] 19. Java๋ก ๋ํ ๋ฉด์ ๊ตฌํ๊ธฐ (1) | 2024.05.27 |
---|---|
[Java ์ดํดํ๊ธฐ] 18. Java์ ์ค๋ฒ๋ก๋ฉ (2) | 2024.05.27 |
[Java ์ดํดํ๊ธฐ] 16. Java์ ์์ฑ์ (2) | 2024.05.27 |
[Java ์ดํดํ๊ธฐ] 15. Java๋ก ๊ตฌ๊ตฌ๋จ ๋ง๋ค๊ธฐ (2) (1) | 2024.05.24 |
[Java ์ดํดํ๊ธฐ] 14. Java๋ก ๊ตฌ๊ตฌ๋จ ๋ง๋ค๊ธฐ (1) (1) | 2024.05.24 |