왜 필요한가?
학생의 신분으로 뭘 알겠나? 솔직히 필자도 정보 은닉의 중요성을 하나도
알지 못한다. 그러나 너무나 당연한 건 게임, 애플리케이션등과 같은 프로그램들
그리고 여러 사이트들은 보안이 중요하다는 것이다. 메모리에 올라가 있는 여러
변수들이 외부에서 너무나도 쉽게 읽히고 바뀐다면 많은 문제가 생기는 게 당연하다.
물론 어떻게 다른 변수에 접근하는지 그 방법은 나도 아직 잘 모르지만, 안전하게
보안을 철저히 해 두는것이 좋지 않은가...
접근 제어자
자바에는 크게 세 개의 접근제어자로 나눌 수 있고 아무런 제어자를 안 적을 수도 있다.
접근 제어자 | 설명 |
public | 외부 클래스 어디에서나 접근 가능 |
protected | 같은 패키지 내부와 상속 관계의 클래스에서만 접근 가능, 그 외 클래스에서는 접근 불가 |
아무것도 안적음! | default로 같은 패키지 내부에서만 접근 가능 |
private | 같은 클래스 내부에서'만' 접근 가능 |
Get( ), Set( ) 메서드
각 변수들 각자의 은닉성이 보장되어야 하니 그들에 접근할 수 있는 다른 방법이 필요했다.
Get( ) 그리고 Set( ) 함수들은 그 이름에서 알 수 있듯이 변수 값을 반환해 주는 Get 메서드
그리고 변수 값을 지정하는 Set( ) 함수로 접근이 가능하도록 한다.
메서드 자체의 은닉성은 보장되지 않아도 되는건가? 나도 잘 모르겠다 히히.
게임개발 시 주의할 점 ( 유니티 C# )
게임개발을 하며 스크립트를 작성할때 변수 혹은 메서드의 접근 제어자를 결정할 때
잘 생각해야 하는 것이 만약 private으로 선언해 버리면 외부 클래스에서 접근이 불가능해
오브젝트 사이의 상호작용이 어려워질 수 있다.
그런데, [SerializeField]를 활용하면 유니티에서 private으로 선언된 변수를 스크립트상에서는
접근이 불가능하지만 UnityEditor상에서는 접근이 가능하도록 할 수 있다.
이는 직렬화를 통해서 private 영역을 유니티가 UnityEditor에서는 보일 수 있도록 하는 것이다.
'Lecture > Java' 카테고리의 다른 글
멈춰있는 것들: Static Variable, Static Method (0) | 2023.01.25 |
---|---|
이거 예약어 : this reserved word (0) | 2023.01.25 |
생성자( Constructor ), 변수 유효 범위 (1) | 2023.01.23 |
도트 연산자 (dot operator) (2) | 2023.01.23 |
내 Class 사용 설명서 :인스턴스화, 참조변수 (0) | 2023.01.19 |