java
JAVA - this 와 this() 는 무엇일까?
this 는 자기 자신의 변수명이나 클래스 변수를 참조하고, this() 는 자기 자신의 클래스 생성자를 호출합니다.
this 변수
this 는 자기 자신의 클래스 인스턴스 변수를 참조할 때 사용합니다. 예를 들어 같은 이름의 지역변수와 인스턴스 변수가 있다면 이를 구분하기 위해 this를 붙입니다.
// ex.1)
public class Ex01 {
public static void main(String[] args) {
Members mem = new Members();
mem.member(10, 20);
}
}
class Members {
// 인스턴스 변수입니다.
public int a = 30;
public int b = 40;
public void member(int a, int b) {
// 파라미터로 넘어 온 지역 변수입니다.
System.out.println("a = " + a);
System.out.println("b = " + b);
// 인스턴스 변수를 얻습니다.
// 파라미터로 넘어온 지역 변수와 구분하기 위해 this 를 붙였습니다.
System.out.println("this.a = " + this.a);
System.out.println("this.b = " + this.b);
}
}
아래는 결과 화면입니다.
// ex.2)
public class Ex01{
public String toString() {
return "사용자 정의 함수입니다.";
}
Ex01(){
// 내장 함수를 호출합니다.
String str = "내장 함수입니다.";
System.out.println(str.toString());
// 사용자 함수를 호출합니다.
System.out.println(this.toString());
}
public static void main(String[] args) {
new Ex01();
}
/*
결과:
내장 함수입니다.
사용자 정의 함수입니다.
*/
}
this() 객체
생성자 this() 는 자기 자신의 클래스 생성자를 호출합니다. 주의할 부분은 맨 윗줄에 적어야 하고, static 에 사용할 수 없습니다.
// ex.3)
public class Ex01 {
public static void main(String[] args) {
// 초기화 합니다.
// public Members() 를 호출합니다.
Members mem = new Members();
mem.member(10, 20);
}
}
class Members {
public int a = 30;
public int b = 40;
public Members(int a) {
this.a = 50;
}
public Members() {
// 자신의 클래스 public Members(int a) 생성자 호출
this(1);
}
public void member(int a, int b) {
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("this.a = " + this.a);
System.out.println("this.b = " + this.b);
}
}
아래는 결과 화면입니다.
this() 는 자기 자신을 호출하는데, this(x, y) 처럼 파라미터가 있으면 자기 자신의 클래스에 해당하는 동일한 파라미터를 가진 함수를 호출하는 게 특징입니다.
// ex.2)
public class Ex01 {
public static void main(String[] args) {
Members mem = new Members();
// 자신의 클래스 public Members() 생성자를 호출합니다.
/* 결과 :
{a} = 2
*/
mem.memb();
// 자신의 클래스 public Members(int a, int b) 생성자를 호출합니다.
/* 결과 :
{a} = 2
{a, b} = 2
{a, b} = 4
*/
mem.memb(4);
}
}
class Members {
public int a = 30;
public int b = 40;
public Members() {
this.a = 1;
}
public Members(int a) {
// 자신의 클래스 public Members() 생성자를 호출합니다.
this();
this.a += a;
System.out.println("{a} = " + this.a);
}
public Members(int a, int b) {
// 자신의 클래스 public Members(int a) 생성자를 호출합니다.
this(1);
this.b = b;
System.out.println("{a, b} = " + this.a);
System.out.println("{a, b} = " + this.b);
}
// public Members(int a ) 를 호출합니다.
public void memb() {
new Members(1);
}
// public Members(int a, int b) 를 호출합니다.
public void memb(int a) {
new Members(1, a);
}
}
0 댓글