1.현재 객체의 인스턴스 변수를 가르킨다.
class Test{
int a;
int b;
//파라메터값 넣은 생성자
Test(int a, int b)
{
this.a = a;
this.b = b;
}
void display()
{ //a랑 b의 값을 보여준다.
System.out.println("a = "+a+" b=" + b);
}
public static void main(String[] args)
{
Test object = new Test(10,20);
object.display();
}
}
output a = 10 b = 20
2.this()는 현재 담겨있는 파라메터 값을 토대로 생성자를 부른다.
class Test{
int a;
int b;
//디폴트 생성자
Test()
{
this(10,20);
System.out.println("디폴트 생성자 안이다!\n");
}
//파라메터가 있는 생성자
Test(int a,int b)
{
this.a =a;
this.b =b;
System.out.println("파라메터값이 있는 생성자!");
}
public static void main(String[] args)
{
Test object = new Test();
}
}
output
파라메터값이 있는 생성자
디폴트 생성자 안이다!
3.메소드의 return this는 현재 클래스의 인스턴스 변수를 반환해준다.
class Test{
int a;
int b;
//디폴트 생성자
Test(){
a = 10;
b = 20;
}
//현재 클라스의 인스턴스를 불러오는 메소드
Test get(){
return this;
}
//a와 b변수를 보여준다
void display()
{
System.out.println("a= " + a + " b= " +b);
}
public static void main(String[] args{
Test object = new Test();
object.get().display();
}
}
a = 10 b = 20
4. this를 메소드의 파라메터 값으로 쓴 경우
class Test{
int a;
int b;
//디폴트 생성자
Test(){
a = 10;
b = 20;
}
//this 키워드를 파라메터 값으로 받는 메소드
void display(Test obj){
System.out.println("a = " +obj.a + " b=" + obj.b);
}
//현재 클래스의 인스턴스를 받는 메소드
//필드의 인스턴스 변수인 a,b를 받음
void get(){
display(this);
}
public static void main(String[] args){
Test object = new Test();
object.get()
}
}
a = 10 b = 20
5.현재 클래스의 메소드를 부를 때 사용하는 this
class Test{
void display(){
//show() 메소드를 부른다.
this.show();
System.out.println("display메소드 안이다!");
}
void show(){
System.out.println("show 메소드 안이다!");
}
public static void main(String[] args){
Test t1 = new Test();
t1.display();
}
}
show 메소드 안이다!
display메소드 안이다!
6.생성자 호출에서 인자(함수 호출 시 전달되는 값)값으로 쓸 떄 사용하는 this
class A{
B obj;
//객체 B의 값을 파라메터 값으로 받는 생성자
A(B obj){
this.obj = obj;
//객체 B의 display()메소드를 부름
obj.display();
}
}
class B{
int x = 5;
//B의 디폴트 생성자이며 , a객체를 생성해준다.
//생성자 안에 B의 인자값을 넣어준다.
B(){
A obj = new A(this);
}
void display(){
System.out.println("b클래스의 x값은 : " + x);
}
public static void main(String[] args){
B obj = new B();
}
}
b클래스의 x값은 5
주로 인스턴스 관련하여 많이 쓰는 듯 하다.
출처: https://www.geeksforgeeks.org/this-reference-in-java/
'Java' 카테고리의 다른 글
call by value , 다른 객체로의 접근 (0) | 2022.01.30 |
---|---|
자바 빌더패턴 @Builder , 메서드 체인(Method chaining) 알아보기 (0) | 2022.01.15 |
인텔리제이에서 Javadoc 생성하기 (0) | 2022.01.13 |
오버라이딩 vs 오버로딩 (0) | 2022.01.08 |
abstract 클라스, 추상클라스 vs 인터페이스 (0) | 2022.01.08 |
댓글