Java 생성자에 대하여
⭐️ 생성자란 ?
생성자란 객체를 초기화 해주기 위한 특수목적 메서드이다 ‼️
생성자는 개발자가 생성해주지 않으면 기능이 없는 디폴트(기본)생성자가 컴파일 과정에서 생성된다 ‼️
생성자는 class와 동일한 이름이다 ‼️
반환형이 존재하지 않는다 ‼️
생성자를 사용하는 가장 큰 이유는 객체를 만듦과 동시에 멤버변수를 선언 및 초기화 하기 위해서이다.
[코드]
package z.practice.object.ex1;
public class Member_Main {
public static void main(String[] args) {
Member member1 = new Member("kkr","qwe123","홍길동");
Member member2 = new Member("kkk", "qwe1234", "홍길순");
Member member3 = new Member("kka", "qqq123", "홍길남");
member1.setInfo(01012341234,"aa@naver.com",25,'남');
member2.setInfo(01012344321,"bb@naver.com", 24, '여');
member3.setInfo(01053344322,"cc@naver.com", 21, '남');
member1.toInfo();
System.out.println();
member2.toInfo();
System.out.println( );
member3.toInfo();
}
}
위 코드는
첫번째로 생성자로 아이디 , 비밀번호 , 이름을 넣어주고 ,
두번째로 setInfo() 메서드를 호출하여 전화번호 , 이메일 , 나이 , 성별을 넣어주고,
마지막으로 toInfo() 메서드를 호출하여 출력해주는 구문이다.
Member member1 = new Member("kkr","qwe123","홍길동");
Member member2 = new Member("kkk", "qwe1234", "홍길순");
Member member3 = new Member("kka", "qqq123", "홍길남");
여기서 객체를 생성하면서 생성자를 바로 호출은 하되 , 값을 넣어주지 않는 코드를 보자.
member1.id = "kkr";
member1.pwd = "qwe1234";
member1.name = "홍길동";
member2.id = "kkk";
member2.pwd = "qwe1234";
member2.name = "홍길순";
member3.id = "kka";
member3.pwd = "qqq123";
member3.name = "홍길남";
딱 봐도 일단 값을 하나하나 . (dot)으로 객체에 접근하여 하나하나 넣어주어야 하는 번거로움과,
아주 잠깐의 시간이지만 객체를 생성하고 , 값을 초기화 해주는 동안 딜레이가 발생한다.
이로인해 객체를 만들때 , 객체의 인스턴스 변수들을 생성과 동시에 초기화 하고싶으면 생성자에
인자를 넣어서 class에 존재하는 생성자 매개변수로 넘겨주어서 초기화를 하면된다.
그러면 이제 class의 생성자가 어떻게 초기화 하는지 알아보자.
[ 인스턴스 변수 코드 ]
String id;
String pwd;
String name;
int phone;
String email;
int age;
char gender;
[ 생성자 코드 ]
public Member(String id, String pwd, String name) {
this.id = id;
this.pwd = pwd;
this.name = name;
}
Main 클래스에서 객체 생성과 동시에 인자를 3개 넘겨준 것을 받는 Member 클래스의 생성자 코드이다.
[ setInfo 메서드 ]
public void setInfo(int phone, String email, int age, char gender) {
this.phone = phone;
this.email = email;
this.age = age;
this.gender = gender;
}
phone, email, age , gender는 setInfo 함수로 객체 생성 후에 따로 값을 넣어주는 메서드이다.
그리고 만약 객체 생성시에 생성자에 인자를 넣지 않는다면 , 컴파일 과정에서 자동으로
기본 생성자를 만들어 준다.
[ 기본 생성자 ]
public Member() {
}
생성자를 통해 객체 생성과 동시에 인스턴스 변수(필드)를 초기화 해줄 수 있고,
만약 따로 생성자에 인자를 넣지 않으면 컴파일 과정에서 자동으로
기본 생성자가 생성된다.