[Java] 생성자 - 필요한 이유

코드 속의 "진돌"·2024년 2월 5일
1
post-thumbnail

✅ 생성자 (Constructor)


객체를 생성하는 시점에 어떤 작업을 하고 싶다면 생성자(Constructor)를 이용한다.
먼저 생성자가 왜 필요한지 코드로 알아보자.

✏️ MemberInit

package construct;

public class MemberInit {
  String name;
  int age;
  int grade;
}



✏️ MethodInitMain1

package construct;

public class MethodInitMain1 {

  public static void main(String[] args) {
    MemberInit member1 = new MemberInit();
    member1.name = "user1";
    member1.age = 15;
    member1.grade = 90;

    MemberInit member2 = new MemberInit();
    member2.name = "user2";
    member2.age = 16;
    member2.grade = 80;

    MemberInit[] members = {member1, member2};

    for (MemberInit s : members) {
      System.out.println("이름: " + s.name + " 나이: " + s.age + " 성적: " + s.grade);
    }
  }
}



🖥️ 실행 결과

회원 객체를 생성하고 나면 name, age, grade같은 변수에 초기값을 설정한다. 아마도 회원 객체를 제대로 사용하기 위해서는 객체를 생성하자 마자 이런 초기값을 설정해야 할 것이다. 이 코드에는 회원의 초기값을 설정하는 부분이 계속 반복된다.

메서드를 사용해서 반복을 제거해보자.



✏️ MethodInitMain2

package construct;

public class MethodInitMain2 {

  public static void main(String[] args) {
    MemberInit member1 = new MemberInit();
    initMember(member1, "user1", 15, 90);

    MemberInit member2 = new MemberInit();
    initMember(member2, "user2", 16, 80);

    MemberInit[] members = {member1, member2};

    for (MemberInit s : members) {
      System.out.println("이름: " + s.name + " 나이: " + s.age + " 성적: " + s.grade);
    }
  }

  static void initMember(MemberInit member, String name, int age, int grade) {
    member.name = name;
    member.age = age;
    member.grade = grade;
  }
}

initMember(…) 메서드를 사용해서 반복을 제거했다. 그런데 이 메서드는 대부분 MemberInit 객체의 멤버 변수를 사용한다. 이런 경우 속성과 기능을 한 곳에 두는 것이 더 나은 방법이다. 쉽게 이야기해서 MemberInit이 자기 자신의 데이터를 변경하는 기능(메서드)를 제공하는 것이 좋다.

profile
매일 성장하는 주니어 개발자의 기록📝

0개의 댓글