객체지향 개념_생성자의 필요성

2023. 12. 30. 12:11개발공부/Java

728x90
반응형

생성자가 없어도 메서드를 통해 자바에서 객체지향 프로그램을 활용할 수는 있다.

 

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


    void initMember(String name, int age, int grade) {
        this.name = name;
        this.age = age;
        this.grade = grade;
    }
}

 

 

void initMember(String name, int age, int grade)와 같이 초기화를 실행하는 메서드를 클래스에 만든다. 

그리고 아래와 같이 실행 클래스에서 이 메서드를 호출할 수 있다. 

 

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);
    }
}

 

하지만 

객체를 생성한 뒤,

객체의 변수를 별도의 메서드로 초기화할 경우, 

메서드를 빼먹는 실수가 나올 수 있음. 이때 컴파일 오류가 발생하지 않기 때문에, 디버깅을 제대로 하지 못한 채 프로그램을 제작할 수 있음. 

이런 문제를 해결하기 위해 객체 생성과 초기화를 동시에 하는 기능이 필요하며 그 기능을 수행하는 것이 생성자.

 

**생성자 규칙

1. 클래스 이름과 같은 이름을 쓴다.

2. 반환타입은 쓰지 않는다. 

3. 생성자를 작성하지 않으면 기본생성자가 자동으로 생성된다(생성자를 작성했다면 기본생성자는 작성되지 않음).

4. 생성자 오버로딩 시, this 생성자는 반드시 첫줄에 ( this()생성자는 생성자 작성 시, 중복을 피하는 방법 )

5. 생성자는 반드시 호출해야 한다(클래스에 작성한 방식대로 생성하지 않을 경우 컴파일 오류 발생 ※오히려 좋은 오류)

6. 생성자의 매개변수와 필드명이 같다면 this를 사용해야 함. 

728x90
반응형