일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 오라클
- select
- 문자열
- SQL
- Dynamic Programming
- algoritm
- 그대로 출력하기
- n x 2 타일링 2
- 데이터베이스
- 입출력
- 알고리즘
- ANSI JOIN
- Database
- 2156
- darkest dark
- oracle
- Java
- 소숫점처리
- db
- 동적계획법
- Eclipse
- Algorithm
- 반복문
- 백준
- 자바
- 데이터길이
- JOIN
- DP
- 10951
- 변수
Archives
- Today
- Total
Cracking Code
[Java] 생성자 (Constructor) 본문
자바 객체는 클래스를 인스턴스화할 때 호출하여 초기화하는 역할을 담당합니다.
생성자 (Constructor)
생성자를 호출하여 멤버 변수에 데이터를 초기화합니다.
setter 메소드를 사용하여 초기화할 수 있지만 자바에서 생성자를 호출함과 동시에
멤버 변수를 초기화할 수 있도록 하는 편의성을 제공합니다.
따라서 일반적으로 setter 메소드는 멤버 변수에 저장된 데이터를 수정하는 역할을 담당합니다.
modifier class_name([data_type variable, ...]) {
[...]
}
메소드와 여러가지 비슷한 특징을 가지지만 리턴 타입이 없으며
반드시 클래스와 동일한 이름으로 지정해야 합니다.
만약, 생성자를 따로 정의하지 않았다면 자동으로 기본 생성자가 생성됩니다.
// 기본 생성자
public class_name() {}
개발자가 명시적으로 생성자를 정의하면 기본 생성자는 자동으로 제공되지 않으므로
기본 생성자가 필요할 경우 명시적으로 정의해야 합니다.
E.g.
// Constructor.java
public class Constructor {
public Constructor() {
System.out.println("기본 생성자 호출!");
}
}
// Main.java
public class Main {
public static void main(String[] args) {
Constructor constructor = new Constructor();
// Constructor 클래스의 생성자를 사용하여 객체 생성
}
}
// 실행 결과
기본 생성자 호출!
자바의 객체는 생성자에 의해 생성됩니다.
위의 예제처럼 생성자를 임의로 지정하고 블록 안에 명령문을 넣으면
메소드와 비슷하게 명령문을 수행하게 됩니다.
객체의 생성과 동시에 멤버 변수를 초기화하는 생성자를 정의해봅시다.
E.g.
// Constructor.java
public class Constructor {
String name;
public Constructor() {
System.out.println("기본 생성자 호출!");
}
public Constructor(String name) {
// String 타입의 데이터를 받아
// 멤버 변수 name에 저장
this.name = name;
System.out.println("Constructor(String) 생성자 호출!");
}
}
// Main.java
public class Main {
public static void main(String[] args) {
Constructor constructor = new Constructor();
Constructor constructor2 = new Constructor("dev우쟈");
// constructor 객체의 name 멤버 변수 출력
System.out.println(constructor.name);
// constructor2 객체의 name 멤버 변수 출력
System.out.println(constructor2.name);
}
}
// 실행 결과
null
dev우쟈
위 처럼 생성자는 같은 이름으로 선언하되 받는 인자의 갯수나 순서, 데이터 종류가 다르면
오버로딩이라는 기술의 의해 일치하는 메소드 또는 생성자가 호출됩니다.
기본 생성자로 객체가 생성되었다면 객체의 멤버 변수에는 각 데이터 타입에 따라 기본값이 초기화되며
String 타입의 매개 변수를 받아 생성과 동시에 초기화하는 생성자로 객체가 생성되면
명령에 따라 멤버 변수가 초기화됩니다.
'Java > Java language' 카테고리의 다른 글
[Java] 상속 (Inheritance) (0) | 2020.08.12 |
---|---|
[Java] this 키워드 (0) | 2020.08.09 |
[Java] 필드 (Field) (0) | 2020.08.05 |
[Java] Method (메소드) (0) | 2020.08.05 |
[Java] Class (클래스) (0) | 2020.08.05 |
Comments