멍발자의 개발

생성자 본문

STUDY/Java

생성자

개발하는 멍발자 2022. 3. 23. 15:02

생성자

 

클래스에서 필드와 메소드 외에 생성자라고 불리는 것을 정의할 수 있다.

멤버 변수 초기화할 때 많이 쓴다.

 

생성자의 특징

 

- void 키워드를 가지지 않는 메소드

- 필드 변수를 초기화하는 메소드

- 클래스명과 같은 이름의 특수한 메소드

- 모든 클래스에 존재하고 오브젝트 작성시에 반드시 불리는 메소드

 

따로 선언해 주지 않으면 자동으로 선언된다.

 

종류

 

1. 기본 constructor : 자동적으로 추가되는 생성자다.

2. 인수 없는 constructor : 클래스 정의 내에 인수 없음으로 생성자를 정의한다.

3. 인수 있는 constructor : 클래스 정의 내에 인수 있음으로 생성자를 정의한다.

 

기본 constructor

 

클래스 블록내에 constructor을 기술하지 않는 것이다.

항상 마지막에 return 형태를 쓰지 않도록 주의해야 한다.

 

인수가 없는 생성자

class Computer1 {
    private String os;
    private int memory;

    // 인수 없는 생성자
    public Computer1() {
        //필드 변수에 초기값 설정
        this.os = null;
        this.memory = 0;
        System.out.println("PC가 생성되었습니다.");
    }

    public void show(){
        System.out.println("PC의 OS는 " + os + "입니다.");
        System.out.println("메모리는 " + memory + "GB입니다.");
    }
}

public class Constructor1 {
    public static void main(String[] args) {
        System.out.println("=== 인수없는 생성자 실행 전 ===");
        Computer1 com = new Computer1();
        System.out.println("=== 인수없는 생성자 실행 후 ===");
        com.show();
    }
}


// 결과
=== 인수없는 생성자 실행 전 ===
PC가 생성되었습니다.
=== 인수없는 생성자 실행 후 ===
PC의 OS는 null입니다.
메모리는 0GB입니다.

클래스 명이랑 생성자 정의가 일치하지 않으면 컴파일 오류가 난다.

클래스가 하나도 정의가 안 되어 있으면 자동적으로 만들어지는데 빈 생성자가 만들어진다.

무조건 클래스에 하나의 생성자가 포함된다.

 

인수가 있는 생성자

 

class Computer2 {
    private String os;
    private int memory;

    //인수가 있는 생성자
    public Computer2(String os, int memory){
        //필드 변수에 초기값 설정
        this.os = os;
        this.memory = memory;
        System.out.println("OS는 " + os + "이고. 메모리는 " + memory + "GB의 PC가 만들어졌습니디.");
    }
    public void show() {
        System.out.println("PC의 OS는 " + os + "입니다.");
        System.out.println("메모리는 " + memory + "GB입니다.");
    }
}

public class Constructor2 {
    public static void main(String[] args) {
        System.out.println("===인수가 있는 생성자 실행 전===");
        Computer2 com = new Computer2("Windows 1", 32);
        System.out.println("=== 인수가 있는 생성자 실행 후 === ");
        com.show();
    }
}
//결과
===인수가 있는 생성자 실행 전===
OS는 Windows 1이고. 메모리는 32GB의 PC가 만들어졌습니디.
=== 인수가 있는 생성자 실행 후 === 
PC의 OS는 Windows 1입니다.
메모리는 32GB입니다.

생성자는 외부 액세스가 불가능한 private이기 때문에 컴파일 오류가 되어 실행할 수 없다.

public으로 되어야 실행 가능하다.

 

기본 생성자

 

자동으로 만들어지는 건 인수가 없는 생성자가 만들어지는 것이다.

빈 생성자를 만드는 습관을 들이자.

 

기본 생성자를 사용할 수 없는 프로그램 = 생성자 만들 때 private를 사용한 경우

 

생성자는 클래스 내에 정의 될 수 있다.

생성자에 액세스 한정자를 붙일 수 있다. private로 해 버리면 외부 클래스로부터 객체의 생성을 할 수 없다.

constructor을 정의하고 있으면 디폴트 constructor은 자동으로 준비하지 않게 된다.

클래스 명이랑 같게 하고 return형은 없고 메소드 정의와 유사하다.

 

인수값의 설정이 필드값이랑 반대가 되면 안 된다.

'STUDY > Java' 카테고리의 다른 글

예외 처리  (0) 2022.03.29
Package & import  (0) 2022.03.28
액세스와 캡슐화  (0) 2022.03.23
클래스와 메소드  (0) 2022.03.22
객체 지향 언어  (0) 2022.03.21
Comments