자바 접근 제어자 private에 대해서 알아보자.
자바 접근 제어자에는 public, protected, (default), private가 있다.
접근 범위는 public > protected > (default) > private 순이며,
public은 전체적으로 접근이 가능하며,
protected는 동일 클래스, 동일 패키지, 다른패키지의 자손클래스에서 접근이 가능,
(default)는 동일 클래스, 동일 패키지 내에서만 접근 가능,
private는 클래스 내에서만 접근이 가능하다.
접근제어자가 default라는 것은 아무런 접근 제어자도 붙이지 않는것을 의미한다.
추가로 아래처럼 사용이 가능하다.
클래스 – public, default, abstract, final
필드 – private, default, protected, public, final, static
메소드 – private, default, protected, public, final, static
생성자 – private, default, protected, public
캡슐화(encapsulation)
클래스나 멤버, 주로 멤버에 접근 제어자를 사용하는 이유는 클래스의 내부에 선언된 데이터를 보호하기 위해서다. 데이터가 유효한값을 유지하도록, 또는 비밀번호와 같은 데이터를 외부에서 함부로 변경하지 못하도록 하기 위해서는 외부로부터의 접근을 제한하는 것이 필요하다. 이것은 객체지향개념의 캡슐화(encapsulation)에 해당되는 내용이다.
외부에서 접근할 필요가 없는 멤버들을 private로 지정하여 외부에 노출시키지 않음으로써 복잡성을 줄일 수 있으며 이것 역시 캡슐화에 해당된다. private인 변수의 값을 읽고 변경할수 있도록 public 메소드를 제공함으로써 간접적으로 멤버변수의 값을 다룰 수 있도록 하는것이 바람직하다. 보통 setter(매개변수에 지정된 값을 검사하여 조건에 맞는 값일때만 멤버변수의 값을 변경하는 메소드)와 getter(멤버변수의 값을 반환하는 메소드)가 있다.
private
클래스 내에서만 접근이 가능한 접근 제어자. 아래 예제를 확인해 보자.
Product클래스에서 멤버 변수들을 private로 선언했다. 해당 접근 제어자는 클래스 내에서만 사용이 가능하므로, setName()메소드와 setPrice()메소드로 이름과 가격을 매개변수로 받아 대입하고, getName()메소드와 getPrice()메소드로 이름과 가격을 리턴받아 사용이 가능하다. private를 사용하는 용도는 보안성 때문이다.
각각 p01과 p02객체를 생성해 setName()메소드와 setPrice()메소드로 이름과 가격을 대입하고 getName()메소드와 getPrice()메소드로이름과 가격을 출력 받는다.
출력된 값은 아래와 같다.
'언어공부 > Java' 카테고리의 다른 글
자바 생성자(Constructor), 생성자 오버로딩(Constructor Overloading), 초기화 블록 (0) | 2021.05.08 |
---|---|
자바 메소드 오버로딩(메서드 오버로딩, Method Overloading), 자바 가변인자(Varargs, Variable Argument List) (0) | 2021.05.08 |
자바 기본형 매개변수/ 참조형 매개변수 / 참조형 반환타입 (0) | 2021.05.06 |
자바 메소드(Method) - 메소드 선언 / 메소드의 선언부 / 메소드의 구현부/ 지역변수/ 메소드의 호출 (0) | 2021.05.05 |
자바 클래스와 객체 - 객체지향 언어/ 객체 속성과 기능/ 객체와 인스턴스/ 객체의 생성과 사용 (0) | 2021.05.03 |