Programming Language/Java

setter, getter 메소드로 여러 종목의 운동선수들의 메달 개수 출력하기

Ma_Sand 2022. 3. 1. 20:39
반응형

접근제한자 private을 사용할 때에는 해당 클래스엔 특정 값이 입력되면 안된다.

왜냐하면 private을 썼다는 것은 보안이 필요한 경우이기 때문이다.

그래서 진짜 값이 들어있는 클래스는 다른 곳에 두어야 한다.(아무도 모르고 나만 아는..)

그런데 그렇게 되면 직접 접근할 방법이 없으므로 간접 접근할 방법을 찾아야 한다.

이럴 때 쓰는 것이 setter 메소드와 getter 메소드이다.

public class Athlete {
    // 접근제한자 private
    // public과 달리 볼 수 있는 사람의 제한 범위가 크다.
    // 보안이 필요한 경우에 private을 쓴다.
    private String name;
    private String event;
    private int gold;
    private int silver;
    private int bronze;
    
    // setter 메소드
    // 필드에 간접 접근하기 위해 setter 메소드를 쓴다.
    public void setName(String name) {  // 매개변수가 있는 생성자
        this.name = name;  // this.를 사용해서 필드명과 매개변수를 구분시켜준다.
    }
    public void setEvent(String event) {
        this.event = event;
    }
    public void setGold(int gold) {
        this.gold = gold;
    }
    public void setSilver(int silver) {
        this.silver = silver;
    }
    public void setBronze(int bronze) {
        this.bronze = bronze;
    }
    
    // getter 메소드
    // 값을 가져오는 메소드(retrun)
    // 리턴값이 있을 때(가져올 값이 있을 때)에는 void를 쓰지 않는다.
    public String getName() {
        return name;
    }
    public String getEvent() {
        return event;
    }
    public int getGold() {
        return gold;
    }
    public int getSilver() {
        return silver;
    }
    public int getBronze() {
        return bronze;
    }
    
    //문자열로 합쳐주는 메소드
    public String info() {
        return name + "의 종목은 " + event + "이며, 금메달 " + gold + "개, 은메달 " +
        silver + "개, 동메달 " + bronze + "개를 획득하였다."
    }
}

 

import com.cd.chobo.model.vo.Athlete;  // 운동선수 클래스와 연결하기 위해 import

public class run {
    public static void main(String[] args) {
        Athlete ath1 = new Athlete();  // Athlete 클래스 호출
        ath.setName("김연아");  // '김연아'라는 값을 Athlete 클래스로 보낸다.
        ath.setEvent("피겨스케이팅");
        ath.setGold(3);
        ath.setSilver(1);
        ath.setBronze(0);
        
        Athlete ath2 = new Athlete();
        ath.setName("김연경");
        ath.setEvent("배구");
        ath.setGold(0);
        ath.setSilver(1);
        ath.setBronze(2);
        
        Athlete ath3 = new Athlete();
        ath.setName("최민정");
        ath.setEvent("쇼트트랙");
        ath.setGold(4);
        ath.setSilver(2);
        ath.setBronze(1);
        
        // Athlete 클래스 안에 있는 info 메소드를 호출하여 리턴값을 출력한다.
        System.out.println(ath1.info());
        System.out.println(ath2.info());
        System.out.println(ath3.info());
    }
}

▼실행결과

김연아의 종목은 피겨스케이팅이며, 금메달 3개, 은메달 1개, 동메달 0개를 획득하였다.
김연경의 종목은 배구이며, 금메달 0개, 은메달 1개, 동메달 2개를 획득하였다.
최민정의 종목은 쇼트트랙이며, 금메달 4개, 은메달 2개, 동메달 1개를 획득하였다.
반응형