A sentimental robot

This 본문

Java

This

GOD03219 2017. 12. 28. 14:24

- This란? 자기자신을 호출하는 reference

- 객체 안의 필드를 구별해 주는 역할을 한다.

- This는 instance 메소드의 매개변수의 첫번째 자리에 항상 존재하고 있다. ( 생략되어 있음 )

- This 는 선언할 수 없고, 사용만 가능하다.

- 사용목적

1) 매개변수와 필드의 이름이 같을 경우 구별하기 위해 사용한다.

2) method에서 자기자신을 리턴해야 할 경우 사용한다.

- static 메소드에는 This가 없다. ( 객체를 만들기도 전에 생성되는 메소드이기 때문에 )

- 메소드를 공유함으로서 메모리를 절약할 수 있다.

- This 호출 this() : 생성자 함수에서 또 다른 생성자 함수를 호출

        중복된 코드를 줄이고, 한 군데에서 관리하기 위해 사용





public class Hello2 {
 private int a;  
 public void setA(int a)   
 {
  this.a=a;        // this : 매개변수와 필드의 이름이 같을 경우 구별하기 위해 사용한다.
 }
 public int getA(){
  return a;
 }
 public static void main(String[] args) {
 
  Hello2 ct=new Hello2();
  ct.setA(100); 
  System.out.print(ct.getA());    //100출력
  
}
 
}






public Hello2 getObject(){      //객체 자기자신을 리턴하겠다는 뜻
 return this;
}






public class Hello2 {
 int a;
 int b;

 public Hello2() {


  this(0,0);  //a=b=0;
 }

 public Hello2(int a) {
  // this.a = a;
  // b = 0;
  this(a,0);
 }

 public Hello2(int a, int b) {
  this.a = a;
  this.b = b;
 }

 public int getA() {
  return a;
 }

 public int getB() {
  return b;
 }

 public static void main(String[] args) {


  Hello2 ct01 = new Hello2();     //0 ,0
  Hello2 ct02 = new Hello2(10);     //10,0
  Hello2 ct03 = new Hello2(30,50);     //30,50


  System.out.println(ct01.getA()+" "+ct01.getB());
  System.out.println(ct02.getA()+" "+ct02.getB());
  System.out.println(ct03.getA()+" "+ct03.getB());


 }

 

}

 


 

class Apple {

 void f2(Banana ban) {
  System.out.println("Apple f2");
  ban.f3();
 }
}

class Banana {
 void f1(Apple ap) {
  System.out.println("Banana f1");
  ap.f2(this);   // new Banana()를 매개변수로 던지면 새로 생성된Banana객체가 생성되고 그 객체의 f3이다. 하지만 this를 넘기면 현재생성된 객체를 넘겨주는 것이다.
 }

 void f3() {
  System.out.println("Banana f3");
 }

}

public class Day {

 public static void main(String[] args) {
  Banana ban = new Banana();
  ban.f1(new Apple());
 }

}

 

'Java' 카테고리의 다른 글

"Has~A" exercise  (0) 2017.12.28
Has~a  (0) 2017.12.28
Object oriented style exercise  (0) 2017.12.28
Object-oriented style score management  (0) 2017.12.28
The elements of "Class"  (0) 2017.12.28