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

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

반응형

안녕하세요. 스마트팩토리입니다.

자바 중급 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();

}

반응형

from http://sf2020.tistory.com/79 by ccl(A) rewrite - 2021-09-06 03:27:24