1 private 멤버변수 사용

1️⃣ 캡슐화

📌 캡슐화 : 객체 외부에서 객체의 데이터로 직접접근을 막음 ⛔️

  • 객체지향프로그래밍, Java의 특징

  • 객체데이터를 외부에서 읽고 변경 → 객체의 무결성이 깨짐
    (ex. 자동차 속도는 음수 불가. but 외부에서 음수로 변경 → 객체 무결성이 깨짐)

2️⃣ 메서드를 통한 데이터변경 허용

  • private 멤버변수 사용 → 외부에서 조회 및 변경 불가 ⛔️

  • 메서드를 통한 데이터변경 허용

    • 외부에서 메서드를 통해 데이터로 접근하도록 유도
    • 메서드 → 데이터 유효성검사 → 유효값만 데이터로 저장 가능

    ➡️ 이때의 메서드를 getter, setter 라고 함


2 Getter, Setter 기본형태

public class Sample {
	// 멤버변수 private 선언
    private String name;
    
    // Getter
    public String getName() {
    	return name;
    }
    
    // Setter
    public void setName(String name) {
    	this.name = name;
    }
}

Getter ➡️ 필드 값을 읽음
Setter ➡️ 외부에서 값을 지정해 수정함


3 Getter 규칙

📌 get+필드네임() : 일반 필드 type
📌 is+필드네임() : 필드 type → boolean

  • 필드네임 첫글자는 대문자 사용

  • 멤버변수 → private

  • getter 메서드 → public

  • getter는 필드값을 읽어오는 것이므로 return 값이 있음

class FieldPrac {
	private boolean check;
    
    public boolean isCheck() {
    	return check;
    }
}
public class Student {
	private int age;
    private boolean test;
    
    public int getAge() {
    	return age;
    }
    
    public boolean isTest() {
    	return test;
    }
}

4 Setter 규칙

📌 set+필드네임(필드자료형타입 필드이름)

  • 필드네임 첫글자는 대문자 사용

  • 멤버변수 → private

  • getter 메서드 → public

  • return 타입 → void

  • 외부에서 값을 지정해 유효성검사를 통해 수정함 → 참조변수 this를 사용함

public class Bus {
	private boolean stop;
    
    // getter
    public boolean isStop() {
    	return stop;
    }
    
    // setter
    public void setStop(boolean stop) {
    	this.stop = stop;
    }
}

5 Java code

public class Car {
	// 멤버(인스턴스)변수
    private int speed;
    private boolean stop;
    
    // 생성자
    
    // getter
    public int getSpeed() {
    	return speed;
    }
    
    // setter
    public void setSpeed(int speed) {
    	if (speed < 0) {
        	this.speed = 0;
            return;
        } else {
        	this.speed = speed;
        }
    }
    
    // getter
    public boolean isStop() {
    	return stop;
    }
    
    // setter
    public void setStop(boolean stop) {
    	this.stop = stop;
        this.speed = 0;
    }
}
profile
🐱Sunyeon-Jeong, mallang developer🐰

2개의 댓글

comment-user-thumbnail
2023년 7월 18일

유익한 글 잘 봤습니다, 감사합니다.

답글 달기
comment-user-thumbnail
2023년 7월 18일

정말 잘 읽었습니다, 고맙습니다!

답글 달기