java 코드를 보면 클래스나 변수, 메서드 앞에 public이 붙는 것을 심심치 않게 볼 수 있다.
이건 무슨의미인지, 또 public 이 없으면 어떻게 되는지 알아보자
접근 제어자는 객체 사용자가 무분별하게 객체 내부적으로 사용하는 변수나 메서드에 접근하는 것을 막는다.
💡 무분별한 접근을 막음으로써 개발자가 의도하지 못한 오동작을 방지할 수 있다.
접근제어자는 private, default, protected, public 가 있다.
뒤로 갈수록 더욱 많은 접근을 허용한다.
private 가 붙은 변수, 메서드는 해당 클래스에서만 접근이 가능하다.
private 접근제어자가 붙은 변수 secret
과 메서드 getSecret
은 Sample 클래스에서만 접근이 가능하다.
사진처럼 Sample 클래스가 아닌 다른 곳에서 접근을 시도하면 에러가 나온다.
default 가 붙은 변수, 메서드는 같은 패키지내에서만 접근 가능하다.
또한 default 는 생략 가능하다. 즉, 아무것도 붙지 않는다면 default 이다.
동일 패키지안이라면 오류없이 접근 가능하다.
protected 가 붙은 변수, 메서드는 같은 패키지이거나 해당 클래스를 상속받은 다른 클래스에서만 접근이 가능하다.
Main 클래스와 다른 패키지 pack2 에 클래스를 생성했다.
동일 패키지에 있는 sample 클래스의 protected 변수는 접근이 가능하지만 다른 패기지의 클래스 SampleTwo의 protected 변수에는 접근이 불가능함을 알 수 있었다.
하지만 Main 클래스가 SampleTwo 클래스를 상속 받았기 때문에 Main 클래스의 객체에서는 접근이 가능하다.
public 이 붙은 변수, 메서드는 어떤 클래스에서라도 접근이 가능하다.
위의 sampleTwo의 protected 변수를 public 으로 바꿨더니 접근이 가능했다.