본문 바로가기
Java

자바 중급 019. this()- 생성자 , this-참조변수

by Smart Factory in 2020 2021. 9. 6.
728x90
반응형

안녕하세요. 스마트팩토리입니다. 
자바 중급 019. this()- 생성자 호출, this-> 참조변수에 대해 알아보겠습니다. 

1. his()- 생성자 호출, this-> 참조변수

가. this()  와 this  

this():
-생성자 호출
-같은 클래스 내에서 다른 생성자를 호출할때 사용

this
-인스턴스 자신을 가리키는 참조변수
-인스턴스 주소가 저장
-모든 인스턴스메서드에 지역변수가 숨겨진 채로 존재
-지역변수와 인스턴스 변수를 구별할때 사용

 나. this()  와 this

<< Relate.java 클래스>>

 

 

this()  는 생성자 호출로 기존에 있는 생성자를 호출하는 것입니다. 매개변수가 없는 기본 생성자에서 .this()를 활용하여 매개변수가 있는 생성자의 모양을 그대로 호출한 것을 볼 수 있습니다. 

 this 는 참조변수로 인스턴스의 주소가 저장되어 있는 곳입니다. 

 

public Relate(String name, int age) {
   this.name=name; ---> 참조 변수 
   this.age=age; ---> 참조 변수 

에서  this. name 을 사용하여 객체의 매개변수의 값의 주소를 저장하고 있어서 call by reference로 주소값이 가리키는 곳의 실제값이 변경되어 출력값은 실제 값이 변경된 값이 출력되게 됩니다. 

 public Relate(String nm) {
  name=nm;
  this.age=45;  ---> 참조 변수 
 }

 name=nm; 처럼 매개 변수가 이름이 다른 경우는 call by value로 그냥 넣어도 되지만 

this.age=45;는 매개변수를 사용하여 작성하였습니다. 
이부분도 age=45로 작성해도 같은 값이 나오게 됩니다. 

하지만 

this. name = name 의 경우는 매개변수의 이름과 클래스 변수 이름이 같기 때문에 구분하기 위해서 this.name으로 작성하여 변수를 구분하여 줍니다.

this.name  은 인스턴스 변수,  오른쪽의 name 은 지역변수입니다.

package ex01;


public class Relate {
private String name;
private int age;
 
//public Relate() {}; 
public Relate(String name, int age) {
   this.name=name; ---> 참조 변수 
   this.age=age; ---> 참조 변수 
    }
 public Relate(String nm) {
  name=nm;
  this.age=45;  ---> 참조 변수 
 }
 public Relate() {
   this("Hong",45);--> 생성자
    }
 
 public void show() {
 System.out.println(" 성명: "+this.name+" 나이: " +this.age);
 }
}

<< RelateEx.java 클래스>>

package ex01;

public class RelateEx {

public static void main(String[] args) {
 Relate c1=new Relate();
 Relate c2=new Relate("kim", 45);
 Relate c3=new Relate("Lee");
     c1.show();
     c2.show();
     c3.show();
}
728x90
반응형

댓글