매일 매일 미라클 코딩
생성자(Constructor)의 MBTI 는 '엄격한관리자(ESTJ)' 본문
시험을 봐야하는데 수험표가 없다면? 입금을 해야하는데 계좌번호를 모른다면?
시험이라는, 입금이라는 중요한 임무를 수행할 수 없게 되겠지요.
프로그램도 마찬가지로 객체를 다룰 때 꼭 필요한 준비물이 있습니다.
이러한 준비물이 누락되는 것을 방지하는 것이 바로 클래스의 생성자입니다.
입출금을 실행하는 은행 프로그램을 만들겠습니다.
계좌 단위로 거래가 이루어지므로 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 유형의 성격을 가졌다고 볼 수 있겠습니다.
'BackEnd > JAVA' 카테고리의 다른 글
| 오버라이딩 VS 오버로딩, 그리고 super. / this. (0) | 2020.12.07 |
|---|---|
| [JAVA] 상속과 생성자 (feat. super()) (0) | 2020.12.02 |
| 배열과 밀고 당기기: 깊은 복사, 얕은 복사 (0) | 2020.11.24 |
| [JAVA] 배열로 로또 번호 점지 받기 (중복 없는 랜덤 정수) (0) | 2020.11.17 |
| [JAVA] switch/case 문을 이용해 점심 메뉴 고르기 (feat. 랜덤함수 ) (0) | 2020.11.12 |