멤버 변수는 String 형인 name 과 int 형인 id 두 개 밖에 없습니다. 이 클래스의 멤버 변수에 접근하기 위해서는 다음과 같이 접근합니다.
이러한 접근방법은 클래스의 속성을 함부로 변경을 가능하게 만드는 위험성을 가지고 있습니다.
자세히 들여다 보시면 변수의 접근 제한자가 private로 선언되어있는 것을 확인할 수 있습니다. 그리고 밑의 메서드명에 'set' 과 'get' 이라는 단어가 들어가 있는 걸 확인 가능합니다.
서두에 언급했듯 인스턴스변수에 접근해서 클래스의 인스턴스 변수를 함부로 변경하지 않고 "Shool.java"가 'set'들어있는 메서드를 통해 "Student.java" 파일의 멤버변수를 변경하고 있습니다.
NotePad of "캡슐화"
"캡슐화"라는 것에 대해 정리했습니다. 하지만 궁금증이 생깁니다 "외부에서 아무 변수를 getter 메서드를 이용해 해당 클래스의 멤버변수를 바꾼다면 그게 무슨 의미가 있지?" 일 것 같습니다. 이것은 단지 인스턴변수에 접근하는 방식이 getter 메서드를 이용하는 것으로 바뀐 것 처럼 보일 뿐입니다. 이 부분은 캡슐화의 특징을 생각하시면서 보시길 바랍니다.
*캡슐화의 특징
객체의 필드(속성), 메소드를 하나로 묶고, 실제 구현 내용을 외부에 감추는 것을 말한다.
외부 객체는 객체 내부의 구조를 얻지 못하며 객체가 노출해서 제공하는 필드와 메소드만 이용할 수 있다.
필드와 메소드를 캡슐화하여 보호하는 이유는 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하는데 있다.
자바 언어는 캡슐화된 멤버를 노출시킬 것인지 숨길 것인지를 결정하기 위해 접근 제한자(Access Modifier)를 사용한다.
'Language > Java-backup' 카테고리의 다른 글
[Java] 상속 (Inheritance) (0) | 2022.04.03 |
---|---|
[Java] 생성자 오버로딩 (0) | 2022.04.03 |
[Java] 오버로딩 (OverLoading) (0) | 2022.04.03 |
[Java] 클래스 (0) | 2022.04.03 |