(Java programming) 생성자

soosoorim·2024년 2월 19일
0

생성자

  • 클래스를 인스턴스로 만들어주는 특별한 메소드.
  • 반드시 new 라는 키워드로 호출해야 한다.
  • 생성자 이름은 인스턴스로 만드려는 클래스의 이름과 동일해야 함

생성자를 직접 정의해 사용하는 두 가지 이유


1. 멤버변수의 초기화(초기 값 할당)
2. 인스턴스 생성과 동시에 다른 메소드를 호출

  • 아래 코드 모두 생성자를 호출 해 인스턴스를 생성


  • 생성자는 인스턴스를 생성하는 메소드 이다.
    생성자를 정의하지 않았는데, 호출이 가능하다?
    생성자가 없는 클래스를 작성하면 “기본생성자” 가 자동 추가된다.

Java 파일이 실행되는 과정

  • Java 파일을 실행하려면 바이트코드로 변환이 되어야 한다.

  • 바이트코드로 변환 할 때, 생성자 정의가 안되어 있다면

  • 기본생성자를 자동으로 생성해 준다.

  • 바이트코드
    java 파일을 바이트코드로 변경 한 후 변경된 파일을 JVM에서 실행한다.
    java 파일을 바이트코드로 변경하는 과정을 컴파일 이라고 함.

사람이 짠 코드를 기계가 알도록 만드는 과정이 compile

생성자 만들어 호출해보기

  • 생성자는 반환타입이 없다.
    생성자는 public 클래스명() 으로 선언하며, 반환타입이 없는 메소드이다.
    때문에, return 키워드도 사용하지 못한다.

생성자를 이용한 멤버변수 초기화 예제

// 1
public class CoffeeShop {
    
    int iceAmericano;
    int hotAmericano;
    public CoffeeShop() {
        iceAmericano = 2500; // 초기값 할당
        hotAmericano = 2000; // 초기값 할당
    }
    public int orderCoffee(int menu, int quantity) {
        if (menu == 1) {
            return iceAmericano * quantity;
        }
        return hotAmericano * quantity;
    }
    
// 2
    public static void main(String[] args) {
        // 생성자 호출
        CoffeeShop cs = new CoffeeShop();
        // 아이스아메리카노 5잔 주문
        int price = cs.orderCoffee(1, 5);
        System.out.println(price);
    }
}

파라미터가 있는 생성자 만들고 호출해보기
커피 가격을 커피숍 인스턴스마다 다르게 할당하고 싶다면?

public class CoffeeShop {
    ... 생략 ...

    // 생성자에 파라미터를 추가합니다.    
    public CoffeeShop(int iceAmericano, int hotAmericano) {
        iceAmericano = iceAmericano; // 초기값 할당
        hotAmericano = hotAmericano; // 초기값 할당
    }
    ... 생략 ...
    public static void main(String[] args) {
        // 생성자 호출
        CoffeeShop cs = new CoffeeShop(); // 에러!
        ... 생략 ...
    }
}

0개의 댓글

관련 채용 정보