일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 멀티쓰레드
- 자바
- 메소드
- 인스턴스
- 카카오코딩테스트
- 백준
- 템플릿엔진
- springDataJPA
- 사용자관리프로그램
- Oracle
- 바인드변수
- SwingCalendar
- 클라이언트
- springboot
- JavaScript
- 클래스
- 서버
- Swing
- java
- HTML모드
- 컬렉션프레임워크
- 생성자
- socket
- jcenter
- mavenCentral
- JPA Auditing
- Spring
- 상속
- 코딩
- 깃허브
- Today
- Total
프리 정보 컨텐츠
자바 생성자에 대한 이해, 이유와 개념 정리 본문
생성자에 대해서 수업을 들었으나 자세하게 구조가 잡히지 않아
구체적으로 생성자에 대한 이해와 생성자를 써야 하는 이유, 개념 정리에 대해서 정리하고자 한다.
먼저, 생성자를 사용하지 않을 때의 간단한 계좌번호, 주민번호, 잔액을 초기화하는 방법이다.
BankAccount.java
public class BankAccount {
String accNumber; // 계좌번호
String ssNumber; // 주민번호
int balance = 0; // 예금 잔액
public void initAccount(String acc, String ss, int bal) {
accNumber = acc;
ssNumber = ss;
balance = bal;
}
public int deposit(int amount) {
balance += amount;
return balance;
}
public int withdraw(int amount) {
balance -= amount;
return balance;
}
public void check() {
System.out.println("계좌번호 " + accNumber);
System.out.println("주민번호 " + ssNumber);
System.out.println("잔 액 " + balance + '\n');
}
}
BankAccountID.java
public class BankAccountID {
public static void main(String[] args) {
BankAccount kim = new BankAccount();
kim.initAccount("12-34-56", "990990-9090990", 20000); //초기화
BankAccount son = new BankAccount();
son.initAccount("23-34-45", "961212-1050111", 20000); //초기화
kim.deposit(20000); // 40000
son.deposit(30000); // 50000
kim.withdraw(10000); // 30000
son.withdraw(20000); // 30000
kim.check();
son.check();
}
}
위의 BankAccount 클래스에서 생성자 없이 초기화하는 방법은 다음과 같다.
많은 코드 중에서 위의 사진과 같은 코드가 핵심이다.
위의 initAccount 메소드는 인스턴스의 초기화를 위한 메소드라고 할 수 있다.
initAccount 메소드를 정의해야만 인스턴스 kim, son의 매개변수를 받아줌으로써 초기화할 수 있는 것이다.
자바에서 생성자를 사용하는 이유?
initAccount는 필드를 초기화하기 위해서 한 번을 호출해줘야만 한다.
즉, 별도의 initAccount 를 설정해줘야만 호출이 가능하다.
'생성자' 라는 것을 이용하면 메소드를 정의하지 않아도 인스턴스의 초기화를 진행할 수도 있다.
-> 객체가 생성되는 시점부터 인스턴스(초기값)을 설정하기 위해 사용한다.
생성자를 사용하지 않고 메소드를 통해 초기화하는 방법과 사용하는 이유에 대해서 알아보았으니
이제 생성자를 사용해서 초기값을 설정하는 방법을 알아보자.
코드가 길어지고 설명이 장황해지니 핵심부분만 비교해보고
생성자는 후에 클래스에서도 많이 사용되니 정확하게 짚고 넘어가자.
생성자 BankAccount
위의 그림을 통해서 보니 확실한 차이점을 한눈에 볼 수가 있다.
생성자를 사용하는 방법과 생성자로 생성되는 인스턴스의 생성 문장을 비교해서 알아보자.
생성자 사용 방법
접근제한자 (public) 메소드이름 (BankAccount) (매개변수 (acc, ss, bal) ) {
// 실행 코드
}
생성자는 이와 같은 방법으로 간단하게 사용된다.
매개변수의 전달값이 동일한 경우에는 this 참조 변수를 사용하면 된다.
이제 생성자를 이용해서 초기화하는 방법을 알아보자.
별도의 초기화시켜주는 메소드 없이 위와 같이 문장을 구성함으로써 생성자가 호출되며 값들이 전달된다.
그리고 이 전달된 값들로 인스턴스 변수가 초기화 된다.
지금까지 자바 생성자에 대한 이해, 이유와 개념 정리를 알아보았다.
마지막으로 생성자의 기타 특성에 대해서 알아보자.
생성자 특징
- 생성자 호출이 되지않으면 에러가 발생한다.
- 일반적으로 public 접근제한자를 사용하나 상황에 따라 private 등 다른 생성자를 사용한다.
디폴트 생성자(기본 생성자)
- 생성자를 선언하지 않아도 자동으로 제공된다.
- 내부적으로 하는 일은 없으나 생성자의 호출은 유지한다.