매일 매일 미라클 코딩

생성자(Constructor)의 MBTI 는 '엄격한관리자(ESTJ)' 본문

BackEnd/JAVA

생성자(Constructor)의 MBTI 는 '엄격한관리자(ESTJ)'

뚜벅-뚜벅 2020. 12. 1. 20:30

시험을 봐야하는데 수험표가 없다면? 입금을 해야하는데 계좌번호를 모른다면?

시험이라는, 입금이라는 중요한 임무를 수행할 수 없게 되겠지요.

 

프로그램도 마찬가지로 객체를 다룰 때 꼭 필요한 준비물이 있습니다.

이러한 준비물이 누락되는 것을 방지하는 것이 바로 클래스의 생성자입니다.  

 

입출금을 실행하는 은행 프로그램을 만들겠습니다.

계좌 단위로 거래가 이루어지므로 Account  클래스를 만들었습니다.

 

class Account{
	String name;
	int accountNum;
	int money;
	
	public Account(String name, int num, int money) {
		this.name=name;
		accountNum= num;
		this.money = money;
	}
}

클래스 안에 클래스와 같은 이름을 가진 Account 메소드가 있는데요.

이렇게 클래스와 같은 이름을 가진 메소드가 바로 '생성자' 입니다. 

 

은행에서 계좌를 만들 때 이름(신분증)이 필요하고, 계좌생성과 동시에 계좌번호와 잔액이 활성화됩니다.

즉, 계좌를 만들 때 피할 수 없는, 꼭 실행되어야 하는 명령이라고 볼 수 있겠는데요. 

만약 셋중 하나라도 빼먹게 된다면 입출금하는 일에 있어 문제가 발생하겠지요.

 

그래서 Account 클래스의 객체를 생성할 때 부터 이름과 계좌번호, 잔액을 설정할 수 있도록

생성자를 통해 설정해주는 것입니다.

 

아래는 메인 메소드입니다.

public class Bank {

	public static void main(String[] args) {
	//계좌 생성
	Account a = new Account("홍길동",1234,10000);
	//입 출금
	deposit(a,2000);
	withdrawal(a,4000);
	
	System.out.println(a.name+"님의 잔액은 "+a.money+"입니다.");
	//홍길동님의 잔액은 8000입니다. 출력
	}
	
	static void deposit(Account a, int money) {
		a.money = a.money+money;
	}
	
	static void withdrawal(Account a, int money) {
		a.money -= money;
	}
}

홍길동의 계좌를 개설하는 코드

Account a = new Account ("홍길동", 1234, 10000);

에서 뒤에 항은 생성자라고 볼 수 있겠습니다. 인스턴스를 생성하는 메소드를 호출해준 것이지요. 

 

이처럼, 생성자는 객체를 초기화 할때 가장 먼저 실행되는 메소드 입니다.

객체 생성 시 매개변수로 객체를 다룰 때 꼭 필요한 값을 받아서 초기화해줌으로써

문제점을 예방하고 있다고 볼 수 있습니다. 


같은 이름의 메소드가 없는 클래스도 있는데요,

이 때는 자바가 같은 이름의 메소드를 자동으로 추가하여 컴파일하게 됩니다.  

이처럼 생성자는

객체를 사용하는 사람이 그 객체를 다룰 때 반드시 필요한 데이터를 꼭 쓰고 넘어갈 수 있게 합니다.

또한 그렇게 기입한 데이터를 기반으로 객체를 초기화 하여 에러를 미연에 방지한다고 볼 수 있겠습니다.

마치 꼼꼼한 성격으로 프로젝트의 빈틈을 허용하지 않는

ESTJ 유형의 성격을 가졌다고 볼 수 있겠습니다.