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