본문 바로가기
기초 및 언어/▶ Java&JSP

16. setter/ getter

by 류딩이 2025. 8. 18.

private

🔒 private 접근제한자의 의미

 

  • private으로 선언된 필드는 클래스 외부에서 직접 접근할 수 없습니다.
  • 즉, f.name이나 f.price 처럼 직접 읽거나 쓰는 게 불가능해요. (컴파일 오류 발생)

그래서 값을 넣을 때는 setter 메서드,
값을 꺼낼 때는 getter 메서드를 반드시 이용해야 합니다.

 

class Fruit{
	// setter 값을 설정하는 값
	// getter 넣은 값을 가져와서 출력
	private String name; // private을 사용하면 정보은닉이 된다. ==> setter로 값 입력 / getter로 값 출력
	private int price;
	
	// setter 값 입력 메서드
	public void setName(String n) {
		name = n; // name = 포도
	}
	
	public void setPrice(int p) { // 메서드를 통해서 조건을 설정하여 값을 넣기
		if(p>0)
			price = p;
	}
	
	
	// getter 값 출력 메서드
	public String getName() { // 이름을 출력하는 메서드
		return name;
	}
	public int getPrice(){ // 가격을 출력하는 메서드
		return price;
	}
}

public class Ex11_setter_getter {

	public static void main(String[] args) {
		Fruit f = new Fruit();

		// setter 값 입력
		f.setName("포도"); // n변수가 포도를 받아서 name에 저장
		f.setPrice(3000); // 3000을 넘기면 P가 3000을 받음 p변수에 받은 값을 price에 넣음


		// getter 값 출력
		String s1 = f.getName(); // 
		System.out.println(s1);
	
		int s2 = f.getPrice(); // 
		System.out.println(s2);
		
		

	}

}

 

 

 

장점

  1. 데이터 보호: 외부에서 필드를 함부로 바꾸지 못하게 막을 수 있음.
  2. 조건 부여 가능: setPrice()처럼, 잘못된 값이 들어오지 않도록 조건 검사를 추가할 수 있음.
  3. 유연성: 나중에 내부 구조가 바뀌더라도 메서드 인터페이스만 유지하면 외부 코드 수정 필요 없음.

 

 

this

class Fruit {
    private String name;
    private int price;

    public void setName(String name) {
        this.name = name;  
        // this.name → 멤버변수
        // name → 매개변수 (지역변수)
    }
}

 

 

  • 매개변수 이름과 멤버변수 이름이 같을 때,
    그냥 name = name; 하면 지역변수끼리만 대입돼서 멤버변수는 값이 안 바뀌어요.
  • 그래서 this.name = name; 처럼 this를 붙여줘야 멤버변수에 값을 넣습니다.

 

class Human{
	private String name;
	private int age;
	private double height;
	
	// setter : 값을 설정하는 곳
	public void setName(String name){
		this.name = name; // 변수이름이 똑같을 때 this를 붙인다. (멤버변수 name)에 넣어라. 
	}
	public void setHeight(double h) {
		if(0<h) {
			height = h;
		}
	}
	public void setAge(int a) {
		if(0<a) {
			age = a;
		}
	}
	
	
	// getter : 넣은 값을 가져오는 곳
	public String getName() {
		return name;
	}
	
	public int getAge() {
		return age;
	}
	
	public double getHeight(){
		return height;
	}
}

// ======== main ========
public class Ex12_stter_getter {

	public static void main(String[] args) {
		
		Human h = new Human(); // 객체 생성
		
		// 값 입력 : setter 
		h.setName("윤아");
		h.setAge(30);
		h.setHeight(172.9);
		
		
		// 값 출력 : getter
		String name = h.getName();
		int age = h.getAge();
		double height = h.getHeight();
		
		System.out.println("이름 :" + name);
		System.out.println("나이 :" + age);
		System.out.println("키 :" + height);
		
	}

}

 

'기초 및 언어 > ▶ Java&JSP' 카테고리의 다른 글

18. 상속  (0) 2025.08.19
17. 생성자  (2) 2025.08.18
15. 오버로딩  (1) 2025.08.18
14. Math  (2) 2025.08.18
13. 재귀호출  (3) 2025.08.18