자바에서 필드와 생성자는 모두 클래스의 구성 요소들이다.
클래스의 구성요소는 필드, 메소드, 생성자.
필드
- 객체의 고유 데이터, 속성, 객체의 현재 상태 데이터를 저장
- 변수 선언과 비슷하게 생김
- 클래스 필드와 인스턴스 필드로 나뉜다.
- 클래스 필드 : 모든 객체가 공유하는 변수, 프로그램 종료 시 소멸
- 인스턴스 필드 : 객체마다 별도로 가지는 변수, 인스턴스
public class Person {
// 인스턴스 필드
private String name;
private int age;
// 클래스 필드
private static int population = 0;
}
생성자
- 객체 생성 시에만 호출하는 특수한 메서드
- new 연산자가 객체 생성자를 이용해 객체를 생성
- 클래스의 이름과 동일
- 반환형 없음
public class Person {
private String name;
private int age;
// 기본 생성자
public Person1() {
this.name = "Unknown";
this.age = 0;
}
// 매개변수가 있는 생성자
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// getter 메서드
public String getName() {
return name;
}
public int getAge() {
return age;
}
public static void main(String[] args) {
// 기본 생성자를 사용하여 객체 생성
Person person1 = new Person();
System.out.println(person1.getName()); // 출력: Unknown
System.out.println(person1.getAge()); // 출력: 0
// 매개변수가 있는 생성자를 사용하여 객체 생성
Person person2 = new Person("Alice", 30);
System.out.println(person2.getName()); // 출력: Alice
System.out.println(person2.getAge()); // 출력: 30
생성자 오버로딩
생성자는 같은 이름으로 여러 개를 생성할 수 있어 유연성 높임
받는 매개변수의 수를 조절해서 사용
public class Person {
private String name;
private int age;
// 기본 생성자
public Person() {
this.name = "Unknown";
this.age = 0;
}
// 매개변수가 1개인 생성자
public Person(String name) {
this.name = name;
this.age = 0;
}
// 매개변수가 2개인 생성자
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// getter 메서드
public String getName() {
return name;
}
public static void main(String[] args) {
// 각 생성자를 사용해 객체 생성
Person person1 = new Person();
Person person2 = new Person("Park");
Person person3 = new Person("Lee", 20);
System.out.println(person1.getName()); // 출력 : Unknown
System.out.println(person2.getName()); // 출력 : Park
System.out.println(person3.getName()); // 출력 : Lee
}
}