본문 바로가기

Java

생성자, this 그리고 call by value, reference

생성자

객체를 생성할 때 항상 실행되는 것으로, 객체를 초기화해주기 위해 맨 처음 실행되는 메소드이다.

 

생성자의 특징

1. 클래스 이름과 동일

2. 반환형이 존재하지 않음.

3. 인스턴스 생성시 딱 한번 호출된다.

4. 인스턴스 변수의 초기화가 목적이다.

 

매개변수의 수와 타입이 다르다면 여러개 생성자를 선언할 수 있다

 

기본생성자: 내용이 없어도 가능하면 기술 
=> 없으면 디폴트 생성자를 컴파일러가 자동으로 생성 

단, 인자가 있는 생성자가 존재하면 기본생성자는 자동으로 만들어지지 않는다.

 

public class Hong{

  int a = 0; //전역변수(인스턴스 변수)

  int b = 0;

   public Hong(){ //기본 생성자

   }

   public Hong(int a, int b){  // 지역변수

     this.a = a; 

     this.b = b;

   }

   public int getA(){

     return a;

   }

   public int setA(int a){

     this.a = a;

   }

}

 

this: 전역변수와 지역변수를 구별하는 용도로 사용됩니다.

this를 사용한 쪽이 전역변수 부분입니다.

static메소드는 객체를 생성하지 않아도 클래스명.static.메소드명으로 호출이 가능합니다. 
이와 같이 객체가 없어도 호출이 가능하기에 this의 사용을 허용하지 않습니다.

 

getter -> 멤버변수를 호출한 곳으로 리턴한다.
setter -> 인자를 받아서 멤버변수를 초기화한다.

 

call  by value 


호출 -> 함수     값으로 -> 인자가 기본형
가인자를 바꾸어도 실인자에 영향이 없습니다.

메소드 호출 시에 사용되는 인자의 메모리에 저장되어 있는 값(value)을 복사하여 보냅니다 
무슨 뜻이냐면 int a =3 이라는 문구가 있으면 메소드에서 인자값을 받을 때 a라는 자체에 주소를 받는게 아니라 a의 값인 3을 받아 처리하는 방식입니다.


call by reference


메소드 호출 시 사용되는 인자 값의 메모리에 저장되어있는 주소(Address)를 복사하여 보냅니다.
값이 아니라 인자 그자체에 주소 값을 보냅니다.

 

자세한건 아래의 링크 참조

 

자바의 메소드(함수) 호출 방식 - Call by Value vs Call by Reference

메소드(함수) 호출 방식 프로그래밍 언어에서 변수를 다른 함수의 인자로 넘겨 줄 수 있습니다. 이 때 이 변수의 '값'을 넘겨 주는 호출 방식을 Call by Value, 이 변수의 '참조값' (혹은 주소, 포인터

siyoon210.tistory.com

 

'Java' 카테고리의 다른 글

싱글톤(singleton)이란?  (0) 2020.10.31
자바 메모리 운영, static변수  (0) 2020.10.31
클래스 구조, 선언, 객체생성  (0) 2020.10.31
배열이란?  (0) 2020.10.31
제어문 및 반복문  (0) 2020.10.31