Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- #프로그래머스 #코딩 #자바 #수열과구간쿼리3
- #프로그래머스
- #프로그래머스 #자바 #코딩 #배열만들기2
- #JSP #Servlet #제이에스피 #서블릿 #필터 #Filter @WebFilter #어노테이션필터
- #git #commit #message #깃커밋 #메시지 #gitmessage #누락 #reset #mixed #마지막커밋정정하기
- #프로그래머스 #자바 #코딩 #전국대회선발
- #프로그래머스 #코딩 #자바 #수열과구간쿼리1
- #프로그래머스 #코딩 #자바 #빈배열에추가삭제하기
- #프로그래머스 #코딩 #자바 #리스트자르기
- #프로그래머스 #코딩 #문자열잘라서정렬하기
- 코딩 #자바 #조건에맞게수열변환하기2
- #프로그래머스 #코딩 #글자지우기 #자바
- #프로그래머스 #코딩 #l로만들기
- #프로그래머스 #자바 #코딩 #무작위로k개의수뽑기
- #프로그래머스 #코딩 #배열원소 삭제하기
- #프로그래머스 #코딩 #순서바꾸기
- #프로그래머스 #코딩 #자바 #문자열여러번뒤집기
- #프로그래머스 #코딩 #자바 #왼쪽오른쪽
- #JSP #Servlet #제이에스피 #서블릿 #필터 #filter #web.xml #필터예제 #filter예제
- #프로그래머스 #코딩 #자바 #문자열이몇번등장하는지세기
- #프로그래머스 #코딩 #자바 #문자열묶기
- #프로그래머스 #코딩 #배열만들기3
- #프로그래머스 #자바 #코딩 #특정문자열로끝나는가장긴부분문자열찾기
- #프로그래머스 #코딩 #배열비교하기
- #프로그래머스 #코딩 #자바 #수열과구간쿼리2
- #프로그래머스 #코딩 #자바 #2의영역
- #프로그래머스 #코딩 #배열의길이에따라다른연산하기
- #프로그래머스 #코딩 #문자열뒤집기 #자바
- #프로그래머스 #코딩 #x사이의개수
- #JSP #Servlet #Ajax #에이젝스 #HTML #success #.HTML() #HTML로붙이기
Archives
- Today
- Total
David의 블로그
[JAVA]정보 오류를 막을 수 있는 정보 은닉, 접근제어자 본문
접근제어자
JAVA에서 객체 지향 프로그램에서는 예약어를 통해 메소드, 변수, 생성자에 접근할 때 접근 권한을 지정할 수 있습니다.
흔히들 접근제어자 'public'을 많이 씁니다.
여기서 정보은닉과 관련있는 private에 대해 다루어 볼려고 합니다.
정보은닉은 외부에서 내부 데이터를 가공하거나 들여다볼 수 없는 특성을 의미합니다.
소스를 통해 살펴보겠습니다.
||예시
getStudentName , setStudentName 메소드,
내부변수 studentID, studentName, grade, address정보가 있는 Student 클래스입니다.
public class Student {
int studentID;
private String studentName;
int grade;
String address;
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
}
Student 클래스를 실행 할 메인클래스 StudentTest입니다.
public class StudentTest {
public static void main(String[] args) {
Student studentLee = new Student();
studentLee.studentName = "David"; //오류
// studentLee.setStudentName("David");
System.out.println(studentLee.getStudentName());
}
}
메인클래스에서
Student형의 studentLee라는 객체를 생성하고
studentLee.studentName = "David"라고 할당해주는 부분에서 에러가 나고있습니다.
바로 private라는 접근제어자의 특성때문인데,
같은 클래스내의 접근은 허용하지만,
다른 클래스내에서는 접근을 허용하지 않습니다.
||해결
그렇다면 접근을 어떻게 해야하나?
바로 getter, setter메소드를 이용하는 방법이 있습니다.
public class Student {
int studentID;
private String studentName;
int grade;
String address;
// getter
public String getStudentName() {
return studentName;
}
//setter
public void setStudentName(String studentName) {
this.studentName = studentName;
}
}
public class StudentTest {
public static void main(String[] args) {
Student studentLee = new Student();
//studentLee.studentName = "David";
studentLee.setStudentName("David"); // setter를 통해 값 할당.
System.out.println(studentLee.getStudentName()); // getter메소드 호출. 정상실행
}
}
이 처럼, 세터를 통해 값을 할당하고
불러올 때 게터를 이용합니다.