[JAVA] 접근제어자

나옹·2022년 11월 20일
0

자바에서 자료형은 객체로 제공한다.

int a=20;

int는 원시타입 변수이기 때문에 a는 객체가 아니다
참조타입은 객체의 주소값이다.

a=null;

오류가 난다! 이유는? null은 참조타입의 기본값이고 원시타입은 null이 될 수 없다.

Integer b=20;

//b는 객체인가요? 맞습니다.

b=null; 

가능하다.
자바에서 자료형은 객체로 제공한다. int같은 경우는 원시타입처럼 사용하는게 주된 사용입니다.
그래서 자바에서는 Intrger라는 클래스를 int처럼 사용할 수 있게 해준다.
두개 자료형의 가장 큰 차이는 객체타입과 원시타입이라는 것이고 객체타입의 Integer는 null값을 가질 수 있다.
//가끔씩은 대입될 자료가 null일 경우가 있다. 이를 방지하기 위해서는 Integer로 선언하는 것이다.

전역변수나 메서드는 참조변수에 의해 참조될 때 보호되어야 합니다.
그런데 꼭 필요한 것은 열어두어야 한다.
이런 권한을 제어하는데 사용한다!

접근제어자

개요
자신의 클래스 자원(전역변수, 메서드)을 외부에서 참조변수로 사용할 때의 권한을 부여
외부라고 함은 같은 클래스, 같은 패키지의 다른 클래스, 다른 패키지의 다른 클래스 이렇게 3개로 분류하여 생각할 수 있다.

종류. private, public, default, protected

private는 오직 같은 클래스 내에서만 접근이 가능하다.
default는 private 성격을 포함하며 같은 패키지 다른 클래스에서만 접근가능, 다른 패키지는 접근불가
public 모두가능 단 프로젝트가 다르면 불가. 프로젝트가 다르면 전혀 다른 프로그램입니다.

객체지향에 어울리게 작성하는 방법은 일단 모두 private로 해놓고, 외부에서 사용해야 한다고 할 때 public 으로 열어둠

단 전역변수에는 public 을 거의 사용하지 않는다.
메서드만 public으로 많이 지정!

값을 저장할 때

초록색 화살표는 직접 접근
파란색 화살표는 한번 거르고 접근

private로 접근을 막고 접근이 꼭 필요한 상황이라면 메서드를 생성하여 사용한다.

값을 가져올 때
분홍색 화살표는 직접 접근
초록색 화살표는 한번 거르고 접근

스레드의 진행 순서를 이해하자!

객체지향 언어에서는 객체를 만들고 여러 클래스에서 이를 사용한다. (재사용성)
객체는 전역변수와 메서드로 구성된다.
다른 클래스에서 특정 객체의 자원을 이용할 때 이용하려고 하는 대상 클래스는 자신의 전역변수와 메서드를 외부에 노출시키지 않아야 한다.
물론 공용으로 사용한다면 노출해도 되지만 보안상 노출하지 않는 것이 좋다.

그런데 외부에서 전역변수나 메서드 자원이 필요하다면 자원을 리턴 해줘야 프로그램이 정상 동작한다. 그래서 접근제어자로 그 범위를 지정하고, 되도록 전역변수가 아닌 메서드로 해당 자원을 리턴 해준다.

전역변수 자원 노출금지 적합한 접근제어자 private
이렇게 하면 다른 클래스에서 절대 사용 못함
그렇지만 그 자원이 꼭 필요한 상황이라면 메서드로 자원 제공

다른 패키지에 있는 클래스를 객체로 생성하려면 그 클래스 생성자에 public을 붙여주어야한다. 아무것도 적혀있지 않을 땐 기본으로 default 로 지정된다.

profile
최고의 개발을 위해 !

0개의 댓글