티스토리 뷰

[java 18강] 자바 생성자



이번 강의 에서는 자바의 생성자에 대해서 알아보고 배워볼것 입니다.

생성자는 클래스를 생성할때 딱한번 실행이 되는 메소드입니다.

그럼 왜 생성자를 쓸까요?

결론 부터 말씀드리면... 

클래스를 생성하면 클레스안에 있는 변수에 값을 넣을때 매번 메소드를 사용해서 넣기가 귀찮아서 입니다.

그래서 생겨난것이 생성자! 

클래스를 생성할때 클래스 안에 있는 변수의 값도 한번에 주자! 입니다 ㅎㅎ

아! 그리고 중한것이 있습니다. 클래스의 생성자를 만들기 위해서는 규칙이 있습니다.

메소드에 반환타입이 없고.... 메소드명이 클래스명과 동일해야 합니다..!

바로 예제를 갖고 설명하도록 하겠습니다.

예제는 생성자가 없을때와 생성자가 있을때를 나누어서 2개의 예제로 살벼보도록 하겠습니다.


생성자가 없을때


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package test17;
 
public class java17 {
    public static void main(String[] args) {
        
        test1 test = new test1();
        test.setA(3);
        test.setB(4);
        System.out.println("int a =" + test.a + "    int b =" + test.b);
    }
}
 
 
class test1 {
    
    int a = 0;
    int b = 0;
    
    public void setA(int c) {
        a = c;
    }
    
    public void setB(int d) {
        b = d;
    }
    
}
cs


결과




생성자가 없을시에는 위의 예제와 같이 생성을 하고...

메소드를 불러... 변수에 값을 넣어주어야 합니다..


생성자가 있을때


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package test17;
 
public class java17 {
    public static void main(String[] args) {
        
        test1 test = new test1(34);
        System.out.println("int a =" + test.a + "    int b =" + test.b);
    }
}
 
 
class test1 {
    
    int a = 0;
    int b = 0;
    
    public test1(int c, int d) {
        a = c;
        b = d;
    }
}
cs


결과



생성자가 있을시에는 위와같이 생성과 함께 변수에 값을 넣어 빠르게 처리를 할수 있습니다..

결과는 생성자가 있건 없건 똑같습니다. 우선 예제에서는 생성자가 있을때 변수를 줄일수가 있고, 더빠르게 처리를 할수 있었습니다.




그리고... 생성자에는 생성자 오버로딩이 있습니다.

생성자 오버로딩이란것이 무엇인지 알아보겠습니다.

우선 위의 예제(생성자가 있을때)를 보시면 ..

public test1(int c, int d) {
        a = c;
        b = d;
    }

변수 a, b 에 두값을 넣을수 있는 생성자만있습니다..

하지만 생성을 할때 변수 하나에만 값을 넣을수도 있지 않나요?

그래서 나온것이 생성자 오버로딩입니다.

바로 예제를 보도록 하겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package test17;
 
public class java17 {
    public static void main(String[] args) {
        
        test1 test = new test1(3);
        System.out.println("int a =" + test.a + "    int b =" + test.b);
    }
}
 
 
class test1 {
    
    int a = 0;
    int b = 0;
    
    public test1(int c, int d) {
        a = c;
        b = d;
    }
    
    public test1(int c) {
        a = c;
    }
    
}
cs


결과 



위에제를보면 생성자가 2개가 있습니다.


public test1(int c, int d) {
        a = c;
        b = d;
    }
    
public test1(int c) {
        a = c;
    }


헐! 어떻게 2개를 쓸수 있을까요? 다른점을 보세요.

매개변수의 개수가 다릅니다. 위와같이 매개변수의 겟수를 다르게 한다면 생성자를 계속해서 만들수 있습니다.

또한 매개변수의 타입이 달라도 계속해서 만들수 있습니다.

이어서 예제를 보시면...

test1 test = new test1(3);

클래스를 생성하는 부분에서 이번엔 변수의 값이 하나만 들어간것을 볼수 있습니다.
숫자 3을 넣었기 때문에 이번에는..

public test1(int c) {
        a = c;
    }

변수가 하나인 생성자를 찾아 클레스가 생성이 된것입니다.


댓글