티스토리 뷰
java this 키워드 사용하기
객체 자신을 참조하는 this 키워드
Test a1 = new Test(); //a1는 Test타입의 참조변수가 됨.
//보통 이 변수를 통해서 객체에 접근한다.
s.setNo(500);
간혹 개체의 메소드를 정의하는 가운데 자신의 객체를 참조해야 할 때가 있습니다.
이것을 self-reference라고 합니다.
메소드 안에서 정의하고 있는 바로 자신의 객체를 참조하기 위해서는 'this' 키워드를 사용합니다.
다음과 사용하면 됩니다.
s.setNo(this);
this의 또다른 사용용도가 있습니다. 변수의 지정과 관련이 있는데 인자와 이미 존재하는 속성의 이름이 같은 경우입니다.
예제를 통해 자세히 알아보겠습니다.
void setName(String name);
하지만 다음과 같은 경우에는 name 변수를 사용할수가 없습니다.
public Class LeeSejinDoc{
String name;
public void setName(String name);
}
}
위와 같은 소스는 에러가 발생합니다.
에러가 발생하는 이유는 setName메소드의 인자값 name이 첫번째 변수 String name; 과 이름이 동일하기 때문입니다.
이때 this 가 사용됩니다.
tihs를 사용하여 소스를 제대로 변경해 보겠습니다.
public Class LeeSejinDoc{
String name;
public void setName(String name);
this.name = name;
}
}
name 이름이 같아서 문제였으나 this.name을 사용하여 메소드 밖에서 정의된 name을 가리킬수 있어 서로 구분이 가능해졌습니다.
this.name = name;
여기서 왼쪽 this.name은 클래스안에 선언된 String name 변수를 의미합니다.
오른쪽 name은 메소드 인자값으로 받은 name을 의미합니다.
this를 사용하는 또다른 방법은 생성자를 재사용 할때 사용합니다.
생성자를 이미 정의 한 상태에서 다른 생성자를 정의하면서 이전의 내용을 재사용하고 싶다면 다음과 같이 하면 됩니다.
예제를 통해서 알아보겠습니다.
Public class TestA1{
private String name;
private String no;
private Transcript transcript;
public TestA1(String a1){ //하나의 인자를 가진 생성자
name = a1;
transcript = new Transcript();
}
public TestA1(String a1, String a2) { //두개의 인자를 가진 생성자.
//하지만 기존의 생성자의 로직을 그대로 사용하려고 함.
//다음과 같이 기존의 생성자를 재사용하는 라인을 삽입합니다.
//여기서는 하나의 String 인자를 받아들이는 생성자입니다.
this(a1);
no = a2;
}
}
다른 예제를 살펴보겠습니다.
-------------------------------------------------------
package test.Autil;
public class LeeSejinDoc {
public static void main(String[] args) {
// TODO Auto-generated method stub
//ThisTestClass 객체 생성
ThisTestClass a1 = new ThisTestClass();
// a1 객체의 참조값을 출력한다.
System.out.println(a1);
// a1의 참조값을 출력한다.
a1.thsitestMethod();
ThisTestClass a2 = new ThisTestClass();
// a2 객체의 참조값을 출력한다.
System.out.println(a2);
// a2의 참조값을 출력한다.
a2.thsitestMethod();
}
}
class ThisTestClass {
public void thsitestMethod() {
System.out.println(this);// 객체의 참조값을 출력
}
}
-------------------------------------------------------------------
결과값
test.Autil.ThisTestClass@7852e922
test.Autil.ThisTestClass@7852e922
test.Autil.ThisTestClass@4e25154f
test.Autil.ThisTestClass@4e25154f
예제 소스를 통해서 객체 자신을 참조하는 this 키워드에 대해 알아봤습니다.
프로그램을 짜다보면 this 키워드의 사용빈도가 제법 많은 편입니다.
정확하게 사용방법을 숙지하고 코딩을 하면 다른 사람들의 코딩을 분석하는데에도 도움이 됩니다.
오늘 포스팅은 여기까지 하겠습니다. 다음에는 자바의 super 키워드에 대해 알아보겠습니다.
super키워드도 쓰임새가 많기에 알아두면 도움이 될듯 싶습니다.
'JAVA(프로그래밍)' 카테고리의 다른 글
java Enumeration 컬렉션과 Iterator 컬렉션 (0) | 2018.08.06 |
---|---|
java Vector class 알아보자 (0) | 2018.08.05 |
자바 예외처리(Exception) 알아보자 (0) | 2018.08.01 |
java 메모장 노트패드 만들기 (0) | 2018.07.31 |
자바 기초 패키지 가져오는 방법 (0) | 2018.07.30 |
- Total
- Today
- Yesterday
- linkHashMap
- java LinkedHashMap
- java문자열자르기
- java 네트워크
- java substring
- File Class
- 자바
- java 노트패드
- java 메모장
- java텍스트파일저장
- java ArrayList
- 자바 패키지
- java Enumeration
- java StringBuffer
- java join
- java wrapper
- java iterator
- 객체파일저장
- java 소켓
- java Vector
- java tihs
- Java
- 자바 랩퍼
- java Properties
- java wrapper class
- java treemap
- java배열
- java문자열저장
- java replaceAll
- java File
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |