Language/Java

[java] 자바 생성자(Constructor) 와 this

비독개 2020. 4. 19. 13:33

생성자(Constructor)

: 클래스명()

-초기화의 목적이 있다. (객체가 생성될때 자동으로 호출(new 명령어를 만났을때)되며 객체를 초기화한다.)

-메소드와 같은 기능을 가지고 있지만, 리턴이 없으며 리턴타입도 없다.

따라서 메소드라고 부르지않는다.

-인스턴스변수(클래스 내부변수) 초기화를 담당 한다.

-생성자는 중복정의 될 수 있다.(생성자 오버로드)

-생성자를 정의하지 않았을 때에는 컴파일러가 제공하는 생성자가 호출되어진다.(default)

 

ex)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 class Ex {
     private int year;
     private int month;
    
     public Ex(){                //생성자 생성(클래스명과 동일)
        year = 2020;
        month = 4;
    }
     public void print() {
         System.out.println(year + "/" + month);
     }
     public static void main(String[] args) {
        Ex ex = new Ex(); //생성자 호출
        ex.print();        
    }
}
 

 

<실행결과>

  2020/4

 

this

: 자신을 참조하는 참조변수

-class 메소드 내에서만 사용가능.

-클래스 내에서 자신의 멤버들을 직접 참조 가능.

-클래스 내에서 자기 자신을 참조할 수 있는 유일한 키워드.

 

ex)

1
2
3
4
5
6
7
8
9
10
11
12
public class Ex {
    String name; // name : 선언된 변수
    int age;
    String phone;
    
    public Ex(String name,int age,String phone) {
        super();        // ㄴ 입력받은 후, 멤버변수에 저장될 매개변수
        this.name = name; //입력받은 후, 멤버변수에 저장될 매개변수
        this.age = age;
        this.phone = phone;
    }
}
 
 

 

따라서, this.name 이라는것은, 멤버변수(전역변수)name에 저장된 매개변수 name을 뜻한다.