안녕하세요. 스마트팩토리입니다.
자바 중급 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();
}
'Java' 카테고리의 다른 글
자바 중급 021. 인스턴스 초기화 블럭, 정적 초기화 블럭,초기화 순서(1) (0) | 2021.09.08 |
---|---|
자바 중급 020. 인스턴스 복사 생성자, 인스턴스 복제 (0) | 2021.09.06 |
자바 중급 018. this() 생성자에서 다른 생성자 호출 (0) | 2021.09.05 |
자바 중급 017. 기본 생성자와 매개 변수가 있는 생성자 호출 (0) | 2021.09.04 |
자바 중급 016. 생성자 (constructor), 매개변수가 있는 생성자(파일분리) (0) | 2021.09.03 |
댓글