자바: 필드와 생성자

친환경 개발자
|2024. 5. 22. 22:18

자바에서 필드와 생성자는 모두 클래스의 구성 요소들이다.

 

클래스의 구성요소는 필드, 메소드, 생성자.

 

 

필드

  • 객체의 고유 데이터, 속성, 객체의 현재 상태 데이터를 저장
  • 변수 선언과 비슷하게 생김
  • 클래스 필드와 인스턴스 필드로 나뉜다.
      - 클래스 필드 : 모든 객체가 공유하는 변수, 프로그램 종료 시 소멸
      - 인스턴스 필드 : 객체마다 별도로 가지는 변수, 인스턴스

 

 

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
    }
}