Notice
Recent Posts
Recent Comments
«   2025/01   »
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
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

접근자 메소드(get method) / 변경자 메소드(set method 본문

Java

접근자 메소드(get method) / 변경자 메소드(set method

빌드이너프 2023. 2. 4. 00:23

접근자 메소드

모든 객체 변수들을 private로 만든다면 그 변수들에 대한 접근을 제한함
만약 다른 클래스에서 그 변수에 접근할 필요가 있을 수 있다
이때 접근자 메소드를 제공해야함
  • 객체 변수에 저장되어 있는 값을 알 수 있게 해주는 메소드
  • 필요한 값을 계산해서 알려주는 메소드
  • 객체 변수의 값을 반환하거나 계산된 값을 반환함
  • 만약 한 접근자 메소드에 대한 접근을 같은 클래스 내로 제한하려면 그 메소드를 private로 선언하면됨
  • 접근자 메소드는 값을 반환하여 호출된 메소드가 원하는 값을 얻게 해주므로 get 메소드라고 부르기도 함
  • 따라서 접근자 메소드의 이름은 관례적으로 get으로 시작함

변경자 메소드

  • 객체 변수의 값을 바꾸는 메소드
  • 보통 객체 변수의 값을 매개변수로 넘어오는 값으로 변경함
  • 변경자 메소드는 자주 객체 변수의 값을 변경하는 것을 제한하기 위해 사용됨
  • 한 변경자 메소드에 대한 접근을 같은 클래스 내로 제한하려면 그 메소드를 private로 선언하면 됨
  • 변경자 메소드는 객체 변수의 값을 새로운 값으로 바꾸게 하므로 set 메소드라고 부르기도함
  • 따라서 변경자 메소드의 이름은 관례적으로 set으로 시작함

예시 1. 객체 변수의 값을 알려 주는 접근자 메소드와, 객체 변수의 값을 넘겨 받은 매개변수의 값으로 변경하는 변경자 메소드를 추가한 프로그램

// 학생의 성적 기록을 나타냄
import java.util.Scanner;
public class Student2 {
    // 객체 변수들
    private String name;
    private int assignmentScore;
    private int examScore;

    // 접근자 메소드

    // 학생의 이름 반환
    public String getName()
    {
        return name;
    }

    // 학생의 과제 점수 반환
    public int getAssignmentScore()
    {
        return assignmentScore;
    }

    // 학생의 시험 점수 반환
    public int getExamScore()
    {
        return examScore;
    }

    
    // 학생의 학점 반환
    public char getGrade()
    {
        char letterGrade; // 학생의 학점
        double total; // 학생의 점수들의 총점

        // 학생의 점수들의 총점을 계산함
        total = getAssignmentScore() * 0.4 + getExamScore() * 0.6;

        // 총점에 따라 학점을 부여
        if (total >= 90) letterGrade = 'A';
        else if (total >= 80) letterGrade = 'B';
        else if (total >= 70) letterGrade = 'C';
        else if (total >= 60) letterGrade = 'D';
        else letterGrade = 'F';

        return letterGrade;
    }

    // 현 Student 객체의 정보에 대한 문자열을 반환
    public String toString()
    {
        String str = "";
        str += "이름: " + name + "\n";
        str += "과제 점수: " + assignmentScore + "\n";
        str += "시험 점수: " + examScore + "\n";
        str += "학점: " + examScore + "\n";
        return str;
    }
    
    
    // 변경자 메소드
    
    // 이름을 주어진 값을 변경함
    public void setName(String Name)
    {
        name = Name;
    }
    
    // 과제 점수를 주어진 값으로 변경
    public void setAssignmentScore(int AssignmentScore)
    {
        assignmentScore = AssignmentScore;
    }
    
    // 시험 점수를 주어진 값으로 변경
    public void setExamScore(int ExamScore)
    {
        examScore = ExamScore;
    }
}

 

예시 2. 예시 1에서 Student2 클래스의 모든 객체 변수들이 private로 선언되어서 그 변수들에 직접적으로 접근할 수 없어 그 변수들의 값들을 변경하기 위해 set 메소드를 호출함

  • ex. stud1이 가리키는 객체의 이름을 '선남'으로 변경하기 위해 stud1.setName("선남"); 사용
// Student2 클래스와 그 메소드들을 사용
public class Student2Driver {
    public static void main(String[] args) {
        // 첫 번째 학생을 나타내는 객체 만듬
        Student2 stud1 = new Student2();

        // 첫 번째 학생의 이름 정함
        stud1.setName("선남");

        // 첫 번째 학생의 과제 점수 줌
        stud1.setAssignmentScore(91);

        // 첫 번째 학생의 시험 점수 줌
        stud1.setExamScore(84);

        // 첫 번째 학생의 이름, 점수들과 학점을 출력
        System.out.println(stud1.toString());


        // 두 번째 학생을 나타내는 객체 만듬
        Student2 stud2 = new Student2();

        // 두 번째 학생의 이름 정함
        stud2.setName("선녀");

        // 두 번째 학생의 과제 점수 줌
        stud2.setAssignmentScore(86);

        // 두 번째 학생의 시험 점수 줌
        stud2.setExamScore(95);

        // 두 번째 학생의 이름, 점수들과 학점을 출력
        System.out.println(stud2.toString());
    }
}

 

출력 결과

이름: 선남
과제 점수: 91
시험 점수: 84
학점: 84

이름: 선녀
과제 점수: 86
시험 점수: 95
학점: 95

 

'Java' 카테고리의 다른 글

생성자 메소드(Default constructor)  (0) 2023.02.06
메소드 다중 정의(method overloading)  (3) 2023.02.04
접근 수정자(Access Modifier) public / private  (0) 2023.02.03
클래스  (0) 2023.02.03
메소드  (0) 2023.02.02