default로 지정된다. 
public:접근 제한이 전혀없다.
protected:같은 패키지 내, 다른 패키지의 자손 클래스에 접근이 가능하다.
default:같은 패키지 내에서만 접근이 가능하다.
private같은 클래스 내에서만 접근이 가능하다.
💡위의 접근제어자를 제외하고는
static,final,abstract가 있다.
클래스: public, default, final, abstract
메서드: public, protected, default, private, final, abstract, static
맴버 변수: public, protected, default, private, final, static
지역변수: final
❗제어자 사용시 주의사항
- 메서드에
static & abstrat는 같이 사용할 수 없다.- 클래스에
abstract & final은 동시에 사용할 수 없다.- abstract 메서드의 접근제어자가 private일 수 없다.
- 매서드에 private & final을 같이 사용할 필요는 없다.
직접적으로 값을 변경 및 읽어오는 것을 막기 위해서 사용한다.
💡 외부에서 객체의 private한 필드를 읽을 필요가 있을 때 사용한다.
private double speed;
private char gear = 'P';
private boolean lights;
public String getModel() {
return model;
}
public String getColor() {
return color;
}
public double getPrice() {
return price;
}
private double speed;필드의 값들이 private로 설정된 경우 getter 메서드를 통해외부에서 값을 가져올 수 있다.
💡 외부에서 객체의 private한 필드를 저장, 수정할 필요가 있을 때 사용한다.
private double speed;
private char gear = 'P';
private boolean lights;
public void setModel(String model) {
this.model = model;
}
public void setColor(String color) {
this.color = color;
}
public void setPrice(double price) {
this.price = price;
}
private double speed;필드의 값들이 private로 설정된 경우 setter 메서드를 통해외부에서 값을 수정할 수 있다.
❗위의 예시에서는 private한 필드의 값을 외부에서 전달한 매개변수 값으로 수정한다.