📌 Chapter 09
⭐ 정보은닉
- 데이터를 가리고 메소드로만 접근가능하게 하는 것
class Circle {
private double rad = 0;
final double PI = 3.14;
public Circle(double r) {
setRad(r);
}
public void setRad(double r) {
if(r < 0) {
rad = 0;
return;
}
rad = r;
}
public double getRad() {
return rad;
}
}
class InfoHideCircle{
public static void main(String args[]) {
Circle c = new Circle(1.5);
c.rad = -2;
c.setRad(3.4);
System.out.println(c.getRad());
}
}
private 선언을 통해 정보은닉
- 인스턴스 변수를 숨기는 개념(인스턴스 변수 직접 접근 제한)
✅ Getter
- 인스턴스 변수의
값을 참조하는 용도로 정의된 메소드
- 변수의 이름이 name이면 메소드의 이름은 getName()으로 짓는게 관례
✅ Setter
- 인스턴스 변수의
값을 설정하는 용도로 정의된 메소드
- 변수의 이름이 name이면 메소드의 이름은 setName()으로 짓는게 관례
⭐ 접근 수준 지시자

- 클래스 정의 대상 : public, default
- 인스턴스 변수, 메소드 대상 : public, protected, default, private
public class AAA{
}
class ZZZ{
}
✅ 클래스 정의 대상(public / default)
- public : 어디서든 인스턴스 생성이 가능
- default : 동일 패키지로 묶인 클래스 내에서만 인스턴스 생성을 허용
- 하나의 소스파일에는 하나의 클래스만 public으로 선언한다
- 소스파일의 이름과 public으로 선언된 클래스의 이름을 일치시킨다
package zoo;
class Duck {
}
public class Cat {
public void makeCat() {
Duck quack = new Duck();
}
}
package animal;
public class Dog {
public void makeCat() {
zoo.Cat yaong = new zoo.Cat();
}
public void makeDuck() {
zoo.Duck quack = new zoo.Duck();
}
}
✅ 인스턴스 멤버 대상(public / default)
- public : 어디서든 접근 가능
- default : 동일패키지로 묶인 클래스 내에서만 접근 가능
package zoo;
public class Cat {
public void makeSound() { System.out.println("야옹"); }
void makeHappy() { System.out.println("스마일"); }
}
package animal;
public class Dog {
public void welcome(zoo.Cat c) {
c.makeSound();
c.makeHappy();
}
}
✅ 인스턴스 멤버 대상(protected)
package alpha;
public class AAA{
protected int num;
}
public class BBB extends alpha.AAA{
public void init(int n){
num = n;
}
}
⭐ 캡슐화
- 클래스 안에 무엇을 넣을까?
- 하나의 목적을 이루기 위해 관련있는 모든것을 하나의 클래스에 담아두는 것