private를 붙이면 같은 클래스 내에서만 접근이 가능하다.
접근 제한자를 사용하는 이유는 클래스 내부의 데이터를 보호하기 위함 = 캡슐화
외부에서 접근할 필요가 없는 멤버들을 private로 지정하여 외부에 노출시키지 않음
멤버 변수를 private로 지정하는 경우, 외부에서 간접적으로 해당 멤버 변수에 접근할 수 있는 public getter, setter메서드를 만들어줌
public class Time {
private int hour;
private int min;
private int sec;
public int getHour() {
return hour;
}
public void setHour(int hour) {
if (hour < 0 || hour > 23) return;
this.hour = hour;
}
public int getMin() {
return min;
}
public void setMin(int min) {
if (min < 0 || min > 59) return;
this.min = min;
}
public int getSec() {
return sec;
}
public void setSec(int sec) {
if (sec < 0 || sec > 59) return;
this.sec = sec;
}
}
생성자에 private를 지정하여 외부에서 해당 클래스의 인스턴스 생성을 제한할 수 있다.
외부에서 생성자에 접근할 수 없으므로 인스턴스를 생성할 수 없다.
대신, 클래스 내부에서는 인스턴스를 생성해서 반환해주는 public 메서드를 외부에 제공할 수 있다.
외부에서 SingleTone인스턴스를 만들 수 없기 때문에, 인스턴스 생성 없이도 호출될 수 있도록 getInstance() 메서드는 static으로 지정
class SingleTone {
private static SingleTone s = new SingleTone(); // static 메서드인 getInstance()가 사용할 수 있도록 static변수로 지정
private SingleTone() {
}
public static SingleTone getInstance() { // 인스턴스 생성 없이도 호출할 수 있도록 static으로 지정
return s;
}
}
생성자가 private인 클래스는 외부에서 인스턴스를 생성할 수 없음
생성자가 private인 클래스는 조상 클래스가 될 수 없음, 자손 클래스의 인스턴스를 생성할 때 조상 클래스의 생성자를 호출해야 하는데, private면 그럴 수가 없음 => final 클래스
'JAVA > java' 카테고리의 다른 글
toString() (0) | 2020.04.20 |
---|---|
hashCode() (0) | 2020.04.20 |
final (0) | 2020.04.20 |
static (0) | 2020.04.20 |
대용량 파일 Java 배치 처리 (0) | 2020.04.20 |