728x90
1. 종류
- private : 해당 클래스 내에서만 접근 가능하다
- public : 모든 클래스에서 접근 가능하다.
- default(기본값) : 같은 패키지 내에서만 접근 가능하다
- protected : 같은 패키지 내에서, 다른 패키지인 경우 자식 클래스에서 접근 가능
2. 활용
아까 처럼 직원이 실수 했다고 가정하자.
// 객체 만들기
BlackBoxRefurbish b1 = new BlackBoxRefurbish();
b1.modelName = "까망이";
b1.setPrice(200000);
b1.color = "블랙";
// 직원 실수
b1.setPrice(-5000);
System.out.println(b1.getPrice()); // -5000
// 고객 문의
System.out.println("해상도 : " + b1.resolution); // null
이번엔 setPrice로 가격을 바꿔 버리고 해상도도 넣지 않았다. 그래서 화가 잔뜩 나서 BlackBoxRefurbish라는 클래스에 변수들을 제한해버렸다.
public String modelName; // 어디서든지 접근 가능
String resolution; // default 기본값
private int price;
protected String color; // 같은 패키지 내에서, 다른 패키지인 경우 자식 클래스에서 접근 가능
그리고 getter와 setter을 만들었다.
public String getModelName() {
return modelName;
}
public void setModelName(String modelName) {
this.modelName = modelName;
}
public String getResolution() {
if (resolution == null || resolution.isEmpty()) { //// resolution이라는 변수가 null이거나 빈문자열이면
return "판매자에게 문의하세요.";
}
return resolution; // 해상도에 관한 정보가 없다면 벨리데이션
}
public void setResolution(String resolution) {
this.resolution = resolution;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
if (price < 100000) {
this.price = 100000;
} else {
this.price = price; // 가격을 -5000으로 설정하였기 때문에 최소금액을 설정하면 됨.
}
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
3. 꿀팁
만약 아예 이 클래스를 건들지 않게 하고 싶다면?
BlackBoxRefurbish라는 클래스에 가서 변수에 private을 붙여주자 ( getter와 setter로 바꿔야하는건 덤)
반응형
'Java 개념' 카테고리의 다른 글
상속과 메소드 오버라이딩 (0) | 2023.07.02 |
---|---|
패키지 (0) | 2023.07.02 |
getter, setter2 (0) | 2023.07.02 |
클래스1탄(클래스, 인스턴스변수, 클래스 변수, 메소드, 오버로딩, 클래스 메소드, this, 생성자) (0) | 2023.06.29 |
List (0) | 2023.06.23 |