Java

[자바] 생성자(constructor)

lala9663 2022. 9. 25. 17:35

생성자


자바에서는 객체의 생성과 동시에 인스턴스 변수를 원하는 값으로 초기화할 수 있는 생성자(constructor)라는 메소드를 제공한다.

자바에서 생성자(constructor)의 이름은 해당 클래스의 이름과 같아야 한다.

즉, Car 클래스의 생성자의 이름은 Car가 된다.

이러한 생성자는 다음과 같은 특징을 가진다.

  1. 생성자는 반환값이 없지만, 반환 타입을 void형으로 선언하지 않습니다.
  2. 생성자는 초기화를 위한 데이터를 인수로 전달받을 수 있습니다.
  3. 객체를 초기화하는 방법이 여러 개 존재할 경우에는 하나의 클래스가 여러 개의 생성자를 가질 수 있습니다.

기본 생성자 (default constructor)


  • 클래스에는 반드시 적어도 하나 이상의 생성자가 존재
  • 클래스에 생성자를 구현하지 않아도 new 키워드와 함께 생성자를 호출할 수 있음
  • 클래스에 생성자가 하나도 없는 경우 컴파일러가 생성자 코드를 넣어 줌
    public Student(){}
  • 매개 변수가 없음, 구현부가 없음

생성자 정의하기(overloading)


  • 생성자를 구현해서 사용할 수 있음
  • 클래스에 생성자를 따로 구현하면 기본 생성자(default constructor)는 제공되지 않음
  • 생성자를 호출하는 코드에서 여러 생성자 중 필요에 따라 호출해서 사용할 수 있음

UserInfo.java

public class UserInfo {

    public String userId;
    public String userPassWord;
    public String userName;
    public String userAddress;
    public String phoneNumber;

    public UserInfo(){}

    public UserInfo(String userId, String userPassWord, String userName) {
        this.userId = userId;
        this.userPassWord = userPassWord;
        this.userName = userName;
    }

    public String showUserInfo() {
        return "고객님의 아이디는 " + userId + "이고, 등록된 이름은 " + userName + "입니다."; 
    }
}

UserInfoTest.java

public class UserInfoTest {

    public static void main(String[] args) {

        UserInfo userLee = new UserInfo();
        userLee.userId = "a12345";
        userLee.userPassWord = "zxcvbn12345";
        userLee.userName = "Lee";
        userLee.phoneNumber = "01034556699";
        userLee.userAddress = "Seoul, Korea";

        System.out.println(userLee.showUserInfo());

        UserInfo userKim = new UserInfo("b12345", "09876mnbvc", "Kim");
        System.out.println(userKim.showUserInfo());
    }
}