JAVA에서 setter와 getter에 대한 문법을 알려줘

KIM YONG GU·2023년 9월 7일
0

JAVA Knowledge

목록 보기
17/40

Java에서 getter와 setter는 클래스의 멤버 변수(필드)에 접근하고 조작하는 메서드입니다. 이러한 메서드를 통해 클래스의 필드를 캡슐화하고, 외부에서 안전하게 접근 및 수정할 수 있게 합니다. 다음은 getter와 setter의 문법과 예제입니다.

Getter 메서드

Getter 메서드는 클래스의 필드 값을 반환하는 역할을 합니다. 보통 "get" 다음에 필드 이름을 CamelCase로 작성한 이름을 사용합니다. Getter 메서드의 반환 타입은 필드의 데이터 타입과 일치해야 합니다

public class MyClass {
    private int myField;

    public int getMyField() {
        return myField;
    }
}

위의 코드에서 getMyField() 메서드는 myField 필드의 값을 반환합니다.

Setter 메서드

Setter 메서드는 클래스의 필드 값을 설정(수정)하는 역할을 합니다. 보통 "set" 다음에 필드 이름을 CamelCase로 작성한 이름을 사용합니다. Setter 메서드는 반환 타입이 void이며, 하나 이상의 매개변수를 받아 필드 값을 설정합니다.

위의 코드에서 setMyField(int newValue) 메서드는 myField 필드의 값을 새로운 값 newValue로 설정합니다.

클래스의 멤버 변수를 getter와 setter 메서드로 접근 및 수정할 때 주의해야 할 중요한 점은 필드의 접근 지정자(접근 제한자)입니다. 필드를 private으로 선언하고, getter와 setter 메서드를 public으로 선언하여 필드에 직접 접근하지 않고 메서드를 통해서만 접근하도록 하는 것이 일반적인 캡슐화 원칙입니다. 이렇게 하면 필드의 상태를 제어하고 오류를 방지할 수 있습니다.

예시를 통해 getter와 setter를 사용하는 방법을 이해해봅시다:

public class Person {
    private String name;
    private int age;

    // Getter 메서드
    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    // Setter 메서드
    public void setName(String newName) {
        name = newName;
    }

    public void setAge(int newAge) {
        if (newAge >= 0) {
            age = newAge;
        } else {
            System.out.println("나이는 음수일 수 없습니다.");
        }
    }
}

이제 Person 클래스의 객체를 생성하고 getter와 setter를 사용해 필드를 조작할 수 있습니다:

public class Main {
    public static void main(String[] args) {
        Person person = new Person();

        // Setter를 사용하여 필드 설정
        person.setName("Alice");
        person.setAge(25);

        // Getter를 사용하여 필드 값 읽기
        String name = person.getName();
        int age = person.getAge();

        System.out.println("이름: " + name);
        System.out.println("나이: " + age);
    }
}

이렇게 getter와 setter를 사용하면 필드의 값을 안전하게 설정하고 가져올 수 있으며, 필드에 대한 유효성 검사 및 추가 로직을 구현할 수 있습니다. (예시 : 회원가입 특수문자 미허용, 아이디 및 패스워드 특수문자 포함 여부 등)

profile
Engineer, Look Beyond the Code.

0개의 댓글