Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
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 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

TMI개발일기

생성자 (constructor) 본문

백엔드/Java

생성자 (constructor)

JP59 2021. 3. 3. 19:30

클래스를 만들고 인스턴스를 생성하면 매번 참조변수를 통해 인스턴스 변수를 일일이 초기화 시켜야 하는 번거로움이 있었다.

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
class TestConstructor {
    
    String language;
    int count;
    char dot;
    
 
    
    
}
 
public class practice {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
 
        TestConstructor Testclass = new TestConstructor();
        
        
        Testclass.language="hello";
        System.out.println(Testclass.language+"  "+Testclass.count);
        
 
        
    }
 
}
cs

위의 코드처럼 TestConstructor라는 클래스를 생성했을 때 

클래스 안의 인스턴스 변수들은 초기화가 되어있지 않으므로

메인 메소드에서 Testclass란 인스턴스를 선언하고 

line20에서 "hello"로 language라는 String 인스턴스 변수를 초기화 해줬다.

 

결과값을 보면

(인스턴스 변수 count는 따로 초기화 해주지 않았으므로 기본값인 0이 출력된다)

 

 

이제 생성자를 사용해보자

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
28
29
30
31
32
33
34
 
class TestConstructor {
    
    String language;
    int count;
    
 
    TestConstructor(String language,int count){
        
        this.language=language;
        this.count=count;
    }
    
    TestConstructor() {}
    
}
public class practice {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
 
        TestConstructor Testclass1 = new TestConstructor();
        TestConstructor Testclass2 = new TestConstructor("HI!",100);
        
        Testclass1.language="hello";
        System.out.println(Testclass1.language+"  "+Testclass1.count);
        System.out.println(Testclass2.language+"  "+Testclass2.count);
        
 
        
    }
 
}
 
cs

생성자를 사용할 떄는 클래스 이름과 같은 반환타입이 없는

메소드를 만들어 필요한 작업을 메소드 내부에 작성하면 생성자 생성은 끝이다.

 

이때 생성자는 일반 메소드와 마찬가지로 오버로딩을 할 수 있다. 위의 코딩 line8과 line 14를 보면

매개변수의 유무의 차이가 있는 생성자 2개가 선언 되어 있음을 알 수 있는데

생성자는 클래스에서 반드시 1개이상 필요하므로 평소에 선언하지 않으면

컴파일 시 자동으로 line14와 같은 생성자가 만들어진다.

 

만약 개발자 임의로 생성자를 선언하면 자동으로 만들어지는 생성자는 

따로 선언되지 않기 떄문에 필요하다면 자동생성자도 오버로딩해서 개발자가 선언해 주어야 한다.

 

매개변수가 있는 생성자와 일반 생성자를 비교해 보기 위해 

Testclass1

Testclass2

두개의 인스턴스를 선언하고 Testclass2는 선언과 동시에 인스턴스 변수를 초기화 해줬다.

 

결과값은

 

 

'백엔드 > Java' 카테고리의 다른 글

접근 제어자(access modifier)  (0) 2021.03.08
상속과 생성자 (extends and constructor)  (0) 2021.03.05
오버라이딩(overriding)  (0) 2021.03.05
상속(extends)  (0) 2021.03.05
클래스 멤버와 인스턴스 멤버  (0) 2021.03.04