JAVA_11_접근제어자 & 캡슐화 & 은닉화 % getter, setter

hyeong taek jo·2023년 7월 5일

JAVA

목록 보기
11/39

📌1. 접근제어자

제어자같은 클래스같은 패키지자손 클래스전체
public0000
protected000
default00
private0
  • private : 같은 클래스 내에서만 접근이 가능하다.
  • default : 같은 패키지 내에서만 접근이 가능하다.
  • protected : 같은 패키지 내에서, 그리고 다른 패키지의 자손클래스에서 접근이 가능하다.
  • public : 접근 제한이 전혀 없다.

📌2. 캡슐화

  • 다른 객체의 필드(멤버변수)값을 직접 읽거나 수정할 수 없게 하고 반드시 별도의 메소드를 통하도록 속성과 메소드를 결합시키는 행위를 객체 지향 방법론에서는 캡슐화
  • 캡슐화의 최대 목적은 정보은닉

📌3. Getter & Setter

  • Setter : 데이터는 외부에서 접근하지 않도록 막고, 메소드는 공개해서 외부에서 메소드를 통해 데이터에 접근하도록 유도한다.
  • Getter : 객체 외부에서 객체 필드값을 사용하기 부적절한 경우가 있다. 이런 경우 메소드로 필드값을 가공 후, 외부로 전달한다.

- 이클립스 Getter & Setter 자동 선언 방법 -

  • Source --> Generate Getter & Setter

예시

class Encapsule {
	private String name;
	private int    age;
	
	public String getName() {
		return name;
	}
	public int getAge() {
		return age;
	}
	public void setName(String name) {
		this.name = name;
	}
	public void setAge(int age) {
		if (age < 0) System.out.println("나이 입력오류 ㅎㅎㅎㅎ");
		else this.age = age;
	}
}


public class EncapsuleEx {

	public static void main(String[] args) {
		Encapsule encapsule = new Encapsule();
		// encapsule.name = "홍길동"; // 멤버변수가 private여서 그냥은 못바꿈
		encapsule.setName("홍길동");  // 그래서 setter와 getter를 쓰는 것
		encapsule.setAge(-10);
		System.out.println("이름 : " + encapsule.getName());
		System.out.println("나이 : " + encapsule.getAge());
		
	}

}
profile
마포구 주민

0개의 댓글