728x90
SMALL
아래의 첫번째 예시를 보자.
public 접근 제어자를 사용해서 언제든지 멤버 변수의 값이 바뀌도록 했다.
package hiding; public class Student { public int studentID; public String studentName; public int grade; public String address; }
package hiding; public class StudentTest { public static void main(String[] args) { Student student = new Student(); student.studentName="홍길동"; System.out.println(student.studentName); } }
그리고 두번째 예시를 보자.
getter, setter 함수를 이용해 private 멤버변수를 접근하도록 했다.
package hiding; public class Student { public int studentID; private String studentName; public int grade; public String address; public String getStudentName() { return studentName; } public void setStudentName(String studentName) { this.studentName = studentName; } }
package hiding; public class StudentTest { public static void main(String[] args) { Student student = new Student(); //student.studentName="홍길동"; student.setStudentName("홍길동"); System.out.println(student.getStudentName()); } }
접근 제어자를 private으로 선언하면 외부 클래스에서 사용할 수 없다.
그리고 위 1, 2예시 모두 결국엔 변수를 사용할 수 있다.
그렇다면 굳이 왜 접근제어자를 private으로 써서 귀찮게 메서드를 만들어 사용하는게 바람직한걸까?
다음 예제를 보면서 알아보자.
학생수가 32명있어서 학번을 1부터 32번까지 할당하는데 누군가의 실수로 학번이 33번이라고 입력된다고 해보자.
메서드에 조건문을 달아주면 오류가 나더라도 그 값이 해당 변수에 대입되지 않아 정보의 오류를 막을 수 있다
package hiding; public class Student { private int studentID; public String studentName; public int grade; public String address; public int getStudentID() { return studentID; } public void setStudentID(int studentID) { if(studentID >32) { System.out.println("오류, 다시 입력하시오"); }else { this.studentID = studentID; } } }
package hiding; public class StudentTest { public static void main(String[] args) { Student student = new Student(); student.setStudentID(33); } }
이치럼 클래스 내부에 사용할 변수나 메서드는 private으로 선언해서 외부에서 접근하지 못하도록 하는 것을 정보 은닉이라고 한다
출처 : Do it! 자바 프로그래밍 입문 - 박은종
728x90
LIST
'Java' 카테고리의 다른 글
[Java] 깊은 복사 VS 얕은 복사 쉽게 이해하기 (0) | 2023.05.16 |
---|---|
[Java] 이클립스 콘솔창 한글깨짐 현상 해결방법 (0) | 2023.04.05 |