일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- terminate
- 클라이언트사이드렌더링
- taskkill
- 모바일웹스킨
- 파이썬
- 플젝후체크
- 코딩온라인
- 비동기
- #스파르타코딩클럽후기 #내일배움캠프후기
- address
- PID
- Anaconda
- github markdown
- 파이콘
- 출처: 자바의 신 8장
- 필사
- 카우치코딩 #couchcoding #6주포트폴리오 #6주협업프로젝트v
- Machine Learning
- Kakao
- 자바파이썬
- khaiii
- Morphological analysis #Corpus
- gitbash
- 마크다운
- 카우치코딩 #couchcoding #6주포트폴리오 #6주협업프로젝트
- github
- expression statement is not assignment or call html
- 서버사이드렌더링
- Technical Writing
- SSR
- Today
- Total
개발 일기
접근자의 종류와 기능 본문
접근자의 종류와 기능
접근 제어자란?
객체 지향 프로그램에서는 예약어를 사용해서 클래스 내부의 변수나 메서드, 생성자에 대한 접근 권한을 지정할 수 있다. 이러한 예약어를 접근 제어자라고 한다.
접근 제어자의 종류
변수는 선언한 접근 제어자에 따라 다음과 같은 특징을 지닌다.
Public: 메서드는 외부 클래스에서 접근이 가능하며, 외부 클래스가 사용할 수 있다.
private: 같은 클래스내에서만 접근이 외부 클래스에서 사용할 수 없다.
protected: 같은 패키지 내부와 상속 관계의 클래스에서만 접근할 수 있고 그 외 클래스에서는 접근할 수 없다.
default없음: 아무것도 없을 때도 해당한다. 같은 패키지 내부에서만 접근 가능하다.
private -> protected ->protected -> public 순으로 많은 접근을 허용한다.
정보 은닉이란?
클래스 내부에서 사용할 변수나 메서드는 private으로 선언해서 외부에서 접근하지 못하도록 하는 것이다.
정보 은닉은 객체 지향 프로그래밍의 특징 중 하나다. 자바에서는 접근 제어자를 사용해서 정보 은닉을 구현한다.
package hiding;
public class Student {
int StudentID;
private String studentName;
// String studentName;
int grade;
String address;
public String getStudentName() {
return studentName;
}
}
package hiding;
public class StudentTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Student studentLee = new Student();
studentLee.studentName = "이상원";
System.out.println(studentLee.getStudentName());
}
}
Student 클래스가 private 이기 때문에 에러가 뜬다. public 이면 접근이 가능하지만, private 은 외부 클래스의 접근을 허용하지 않기 때문이다.
get() set () 메서드
private 변수를 외부에서 접근하려면 get(), set() 메서드를 사용하면 된다
package hiding;
public class Student {
int StudentID;
private String studentName;
// String studentName;
int grade;
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) {
// TODO Auto-generated method stub
Student studentLee = new Student();
studentLee.setStudentName("이상원");
System.out.println(studentLee.getStudentName());
}
}
Public 변수로 설정하면 더 쉬울 텐데 왜 굳이 get set을 사용해야할까?
public 으로 변수를 선언하면 접근이 제한되지 않으므로, 정보의 오류가 발생할 수 있다. 따라서 오류가 나면, 값이 해당 변수에 대입되지 못하도록 변수를 private 으로 바꾸고 public 메서드를 별도로 제공해야 하는 것이다.
출처: 자바 프로그래밍 입문
'Tech > Interview' 카테고리의 다른 글
Overriding vs Overloading (0) | 2022.02.09 |
---|---|
Primitve vs Reference (0) | 2022.02.08 |