[ 객체지향 ] 은닉성

Kong-al·2022년 8월 19일

0816 7일차 수업내용

은닉성

은닉성이란?

멤버변수나 메서드가 객체에 노출되지 않도록 설정하는 기법으로 , 객체를 사용하는 측의 실수로 인한 기능의 오작동을 방지하기 위해 클래스의 일부를 숨기는 것을 말한다.

적용하는 방법

변수의 이름이나 메서드 이름앞에 "접근 한정자" 를 지정한다.

접근한정자

public , private , protected , default

public

  • 모든 곳에서 접근 가능하다.
  • 일반적으로 모든 메서드 앞에 명시한다.

private

  • 클래스 안에서 사용가능하고, 객체를 통해 접근할 수 없다.
  • 일반적으로 모든 멤버변수 앞에 명시한다.

protected

  • 현재 클래스 내의 다른 자원이나, 같은 패키지 안에 존재하는 클래스와 하위 클래스에서 접근 가능하다. 잘 사용하지 않는다.

default

  • 접근 한정자를 명시하지 않은 경우. 현재 클래스 내의 다른 자원이나 동일 패키지 내의 다른 클래스에서 접근 가능하다. 잘 사용하지 않는다.

getter, setter

멤버 변수가 은닉된 형태로 선언된 경우 프로그램의 가장 근본적인 목적인 데이터에 접근하는 방법이 사라지므로 메서드를 통하여 간접적으로 접근해야한다. getter, setter롤 통해 은닉된 멤버 변수에 간접적으로 접근할 수 있다.]

getter

은닉된 멤버변수의 값을 리턴하기 위한 메서드

setter

파라미터로 전달된 값을 멤버변수에 복사하기 위한 메서드

예시

멤버변수이름gettersetter
String userNameString getUserName()void setUserName( String param )
int userAgeint getUserAge()void setUserAge( int param )
-> "get", "set" 접두사 뒤에 변수이름을 첫 글자가 대문자인 형태로 명시
-> getter는 연결된 멤버변수의 데이터 타입을 리턴형으로 명시
-> setter는 연결된 멤버변수의 데이터 타입을 파라미터 형으로 명시

클래스의 접근 한정자

public

  • 객체 생성 가능하다.
  • 서로 다른 소스코드에 정의된 클래스끼리도 객체 새성이 가능하다.

private

  • 클래스에 적용할 수 없다.

protected

  • 클래스에 적용할 수 없다.

default

  • 동일할 소스코드에 정의된 클래스끼리만 객체로 생성 가능하다.
    (지금까지 예제 형태)

클래스의 분리

하나의 소스코드에서 프로그램의 모든 기능을 구현하게 되면 유지보수에 비효육적이므로 가능한 기능단위로 소스코드를 분리해야한다. 이 때 , 소스코드가 분리된 클래스 끼리는 public이 명시 되어야만 서로 객체생성이 가능하다.

일반적으로 클래스 정의에는 public접근 한정자만 사용한다

하나의 소스코드에는 하나의 public 클래스만 존재할 수 있다.\

자바빈즈(Java Beans)

자바 언어에서 사용하는 복합적 데이터 표현의 최소단위로서 ,재사용 가능한 컴포넌트 (구정요소) 를 생성할 수 있다.

관례

  • 클래스는 생성자를 가지고 있어야한다.
  • 클래스의 속성들은 get.set 메서드를 통해 접근 할 수 있어야 한다.
profile
웹개발 공부중!(❁´◡`❁)

0개의 댓글