Programming/Java

[JAVA 기초] 04-1. 클래스와 객체 / 생성자와 소멸자, getter(), setter()

mar1po5a 2025. 2. 7. 00:19

자바에서 클래스는 일종의 쿠키틀과 같다고 볼 수 있다. 클래스라는 설계도를 기반으로 만들어진 객체는 그 쿠키틀로 찍어낸 쿠키와 같다고 볼 수 있다.

더보기
더보기

해당 비유는 박응용 저자의 점프 투 파이썬을 인용했다.

초보자가 명확하고 간결하게 이해할 수 있는, 좋은 비유라고 생각한다.

1. 클래스와 객체

클래스 : 객체를 생성하기 위한 설계도.

객체 : 클래스를 이용해 만들어진 실제 대상. 인스턴스라고도 부름.

public class Cookie {
    String shape; // 쿠키 모양
}

public class Main {
    public static void main(String[] args) {
        Cookie coo = new Cookie();  // 쿠키틀(클래스)로 쿠키(객체)를 생성
        coo.shape = "동글동글";
        System.out.println("쿠키 모양: " + coo.shape);
    }
}

2. 생성자와 접근자, 소멸자

2-1. 생성자 : 객체가 생성될 때 호출되며, 필드를 초기화 시킴.

* 필드를 초기화 시킨다. = 객체의 변수에 초기값을 설정해준다.

 

2-2. getter() / setter() : 객체의 필드를 외부에서 접근, 수정할 수 있게 해주는 메서드.

※ setter()를 사용하면 이후에 필드를 수정할 수 있지만, 그 과정에서 불완전한 객체가 생성될 수도 있음.

class Person {
    private String name; // private 변수

    // 생성자
    public Person(String name) {
        this.name = name;
    }

    // Getter: name 값을 반환
    public String getName() {
        return name;
    }

    // Setter: name 값을 변경
    public void setName(String name) {
        this.name = name;
    }
}

public class Main {
    public static void main(String[] args) {
        Person p = new Person("민지"); // 생성자로 name 초기화
        System.out.println(p.getName()); // Getter 사용 -> "민지" 출력
        
        p.setName("민준"); // Setter 사용 -> name 변경
        System.out.println(p.getName()); // 변경된 값인 "민준" 출력
    }
}

 

2-3. 소멸자 : 사용한 자원을 반환하기 위해 close() 와 같은 메서드를 이용해 처리.

프로그램 종료 시 자동 소멸되는 경우가 많음.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.print("이름 입력: ");
        String name = sc.nextLine();
        System.out.println("입력한 이름: " + name);
        
        sc.close(); // 소멸자 역할, 자원 반환
    }
}

* Scanner 클래스는 사용자로부터 데이터를 입력받을 때 사용한다. nextLong(), nextDouble() 등의 메서드도 있지만, 보편적으로 문자열을 입력받는 nextLine()을 자주 사용한다. 번호를 입력받는 프로그램에서는 nextInt()를 사용하는 경우가 많다.