1. 은닉성이란?
2. 적용방법
변수의 이름이나 메서드의 이름 앞에 "접근 한정자"를 지정한다.
1) public*
-> 모든 곳에서 접근 가능하다.
-> 일반적으로 모든 메서드 앞에 명시한다.
2) private*
-> 클래스 안에서만 사용가능하고, 객체를 통해 접근할 수 없다.
-> 일반적으로 모든 멤버변수 앞에 명시한다.
3) protected
-> 현재 클래스 내의 다른 자원이나, 같은 패키지안에 존재하는 클래스와 하위 클래스에서 접근 가능하다.(잘 사용하지않음)
4) default
-> 접근한정자를 명시하지 않은 경우,현재 클래스 내의 다른 자원이나 동일 패키지 내의 다른 클래스에서 접근 가능하다.
3. getter, setter
멤버변수가 은닉된 형태로 선언된 경우(private 등), 프로그램의 가장 근본적인 목적인 데이터에 접근하는 방법이 사라지므로
메서드를 통하여 간접적으로 접근하는 방법이 마련되어야 함
getter, setter는 은닉된 멤버변수에 간접적을 접근하기 위하여 정의된 메서드들을 의미하는 용어이다.
-> getter : 은닉된 멤버변수의 값을 리턴하기 위한 메서드
-> setter : 파라미터로 전달된 값을 멤버변수에 복사하기 위한 메서드
getter setter
String userName String getUserName() void setUserName(String userName)
-> get이 오고 앞글자가 대문자가 됨
int userAge int getUserAge() void setUserAge(int userAge)
-> get, set 접두사 뒤에 변수이름을 첫 글자가 대문자인 형태로 명시
-> getter는 연결된 멤버변수의 데이터 타입을 리턴형으로 명시
-> setter는 연결된 멤버변수의 데이터 타입을 파라미터형으로 명시
4. 클래스와 접근 한정자
클래스에 접근 한정자를 지정한 경우
public* -> 객체생성 가능하다.
-> 서로 다른 소스코드에 정의된 클래스끼리도 객체 생성이 가능하다.
private -> 클래스에 적용할 수 없다.
protected -> 클래스에 적용할 수 없다.
default -> 동일한 소스코드에 정의된 클래스끼리만 객체로 생성 가능하다.
(지금까지의 예제 형태)
5. 클래스의 분리
6. 캡슐화
7. 자바빈즈(Java Beans)