// 클래스
public class Test {
}
// 메서드
public String Test() {
return ;
}
// 멤버 변수
public class Test {
private a; // 멤버 변수
}
// 생성자
public class Test {
private Test() { // 대부분 생성자의 접근 제어자는 클래스와 동일
super();
}
}
생성자에 접근 제어자(private)를 사용해 인스턴스의 생성을 제한
왜? 외부에서는 인스턴스 생성 못하게하고 클래스 내부에서만
인스턴스를 생성하려고
외부로부터 데이터를 보호하기 위해
: 직접적인 사용을 막는다.
아무 곳에서나 직접적으로 값을 변경 (hour = 3;)을 하면 다른 곳에서도 변경된 값이 들어감
따라서 public으로 지정한 메소드를 생성하고 거기서
set메소드를 통해 값을 변경하고 ( this.hour = hourC ) ,
get메소드를 통해 값을 불러온다. ( return this.hour; )
class Time {
private int hour; // private : 같은 클래스 내에서만 접근 가능
private int min; // 인스턴스 변수
private int sec;
public Time() { // 기본 생성자
super();
}
public Time(int hourC, int minC, int secC) {
super();
this.hour = hourC;
this.min = minC;
this.sec = secC;
}
public void hourChange(int hourC) { // set()의 역할
if (!(hourC > 0 && hourC < 24)) {
System.out.println("범위에 벗어났습니다.");
} else {
this.hour = hourC;
System.out.println("시간이" + this.hour + "로 변경되었습니다.");
}
}
}
public class TimeEx {
public static void main(String[] args) {
Time time = new Time();
time.hour = 3; // 에러!!
// private라 이런식으로 접근할 수 없다. private를 지우면 접근 가능
// 이렇게 직접적으로 값을 바꾸지 않기 위해서 접근 제어자 사용
time.hourChange(28); // 이런식으로 메소드를 통해 값을 바꾼다
}
}
(이 부분은 이해가 필요할 것 같다.)