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
- 코딩 #자바 #조건에맞게수열변환하기2
- dbeaver sqlite
- #batch #스케줄러 #배치스케줄러
- springboot #스프링부트 #junit #junit #제이유닛 #단위테스트코드 #테스트 #test #test
- 깃
- springboot #sprinigbatch #job #step #스프링부트배치 #스프링배치
- Git
- springboot #@beforeall #@afterall
- #프로그래머스 #코딩 #자바 #수열과구간쿼리2
- 컨트롤러테스트코드
- springboot #스프링투브
- #프로그래머스 #자바 #코딩 #전국대회선발
- #프로그래머스 #코딩 #자바 #수열과구간쿼리3
- #신념 #철학 #유쾌함 #후회 #자책
- #프로그래머스 #자바 #코딩 #배열만들기2
- #프로그래머스 #자바 #코딩 #무작위로k개의수뽑기
- 제이피에이
- #프로그래머스 #코딩 #자바 #왼쪽오른쪽
- #프로그래머스 #코딩 #자바 #문자열여러번뒤집기
- #springbatch #springboot #스프링배치 #스프링부트 #배치 #joblauncher #job #step #batchconfig #배치설정 #chunk
- #프로그래머스
- #프로그래머스 #코딩 #자바 #2의영역
- #프로그래머스 #코딩 #자바 #문자열묶기
- #프로그래머스 #코딩 #자바 #리스트자르기
- #springbatch #springboot #스프링배치 #스프링부트 #배치 #joblauncher #job #step #itemreader #itemprocessor #itemwriter
- @autoconfigurationmockmvc
- JPA
- springboot #스프링부트
- springboot #스프링부트 #junit #제이유닛 #라이프사이클 #@beforeall #@beforeeach #@afterall #@aftereach
- #프로그래머스 #코딩 #자바 #문자열이몇번등장하는지세기
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메소드 호출. 정상실행
}
}
이 처럼, 세터를 통해 값을 할당하고
불러올 때 게터를 이용합니다.
정보가 유익하셨다면, 댓글과 공감 한번 부탁드립니다!
반응형