그냥

getter와 setter

인스턴스 변수의 접근 제어자를 private로 변경했을때 변경과 읽어오는건 어떻게 하는가에 의해 사용한다.

getter

public <반환형> getXXX() {
	return <private 인스턴스 변수명>;
}

기본형태는 위 코드와 같다.

class dog{
    private String name;  // 인스턴스 변수
    private int age;      // 인스턴스 변수
    private String sex;   // 인스턴스 변수
    
    public void walk(){ }
    public void eat() { }
    public void bark(){ }
    
    public dog(String name, int age, String sex){
    	this.name = name; // 인스턴스 변수 name에 지역 변수 name을 대입
    	this.age = age;   // 인스턴스 변수 age에 지역 변수 age을 대입
    	this.sex = sex;   // 인스턴스 변수 sex에 지역 변수 sex을 대입
    }
}

public class test{
	
	public static void main(String[] args) {
		dog cheeze = new dog("cheeze", 2, "male");
		
    }
}

 

이때 private로 접근을 막은 것, 보여주고 싶은 정보가 있다getter라는 public 함수로 만든다.

class dog{
    private String name;  // 인스턴스 변수
    private int age;      // 인스턴스 변수
    private String sex;   // 인스턴스 변수
    
    public void walk(){ }
    public void eat() { }
    public void bark(){ }
    
    public String getName() {
    	return this.name;
    }
    
    
    public dog(String name, int age, String sex){
    	this.name = name; // 인스턴스 변수 name에 지역 변수 name을 대입
    	this.age = age;   // 인스턴스 변수 age에 지역 변수 age을 대입
    	this.sex = sex;   // 인스턴스 변수 sex에 지역 변수 sex을 대입
    }
}

getName()이라는 함수로 인해 private인 name변수의 값을 가져올 수 있다.

public class test{
	public static void main(String[] args) {
		dog cheeze = new dog("cheeze", 2, "male");
		System.out.println("dog name : "+ cheeze.getName());
    }
}

setter

public void setXXX(<private 인스턴스 변수의 자료형> <인자명>) {
	<private 인스턴스 변수명> = <인자명>;
}

기본적인 형태는 위 코드와 같다.

 

그리고 private로 접근을 막은 것, 외부에서 변경 하는것을 허용하게 할때 setter라는 public 함수를 만든다.

class dog{
    private String name;  // 인스턴스 변수
    private int age;      // 인스턴스 변수
    private String sex;   // 인스턴스 변수
    
    public void walk(){ }
    public void eat() { }
    public void bark(){ }
    
    public String getName() {
    	return this.name;
    }
    public void setName(String name) {
    	this.name = name;
    }
    
    public dog(String name, int age, String sex){
    	this.name = name; // 인스턴스 변수 name에 지역 변수 name을 대입
    	this.age = age;   // 인스턴스 변수 age에 지역 변수 age을 대입
    	this.sex = sex;   // 인스턴스 변수 sex에 지역 변수 sex을 대입
    }
}

setName()이라는 메서드로 인해 생성된 객체의 변수를 변경할 수 있다.

public class test{
	public static void main(String[] args) {
		dog newdog = new dog(" ",0,"female");
		newdog.setName("dana");
		System.out.println("dog name : "+ newdog.getName());
    }
}

 

※ 인스턴스 변수는 대부분 경우 private로 지정한다. 정보를 숨기기 위해

※ getter 추가는 자유롭게 하되( 사용자가 알필요 없는 정보는 보여주지 않는게 정석),

    setter는 고민 후 추가하자 ( 개체가 스스로 상태를 바꾸게 해야 한다.)

 

클래스를 만들기와 private 인스턴스 변수가 캡슐화이다

사용자는 클래스 속을 알 필요가 없다.

외부로 부터 내부 데이터의 접근을 최대한 막고 보호하기 때문이다.

'JAVA 공부 > 객체지향 공부' 카테고리의 다른 글

5. 상속 (2)  (0) 2023.03.18
4. 상속 (1)  (0) 2023.03.18
3. 생성자  (0) 2023.03.13
2. 변수, 메서드  (0) 2023.03.13
1. 클래스, 객체  (0) 2023.03.12
profile

그냥

@Ticketpaper

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그