일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ModelMap
- View
- 어노테이션
- 정처기 합격
- ModelAndView
- 자바
- mysql
- 정보처리기사 필기
- MariaDB
- JVM Heap
- java
- Class
- jqgrid 개념
- implements
- 트랜잭션
- jqGrid
- Javascript
- JQuery
- 개발자 이직
- Model
- Where
- extends
- 스프링
- HTTP
- ResponseBody
- HTML
- 정보처리기사 합격
- 제이큐그리드
- SQL
- spring
- Today
- Total
크리스의 개발일기
[JAVA] 접근제한자(public, private, protected, default)란? 본문
접근 제한자란?
멤버들은 객체 자신들만의 속성이자 특징이므로 대외적으로 공개되는 것이 결코 좋은 것은 아닙니다.
그런 이유로 프로그래머가 객체의 멤버들에게 접근 제한을 걸 수가 있는데 자바에서는 이를 접근 제한자라 합니다.
제한자 종류
○ public : 외부의 모든 클래스 및 생성자, 메소드, 필드로부터 접근을 완전히 허용
(모든것이 접근가능)
○ protected : 같은 패키지에 속해있는 클래스에서 생성자와 메소드, 필드(객체)만 호출 할 수 있고, 다른 패키지에 있는 생성자, 메소드, 필드는 호출하지 못하지만 상속관계에 있는 클래스라면 예외로 호출이 가능하다
(클래스 선언불가)
○ default : 앞에 public이나 protected, private를 추가하지 않았다면 기본적으로 default 접근 제한자가 되어 다른 패키지와의 클래스 선언과 생성자/메소드/필드의 호출이 불가능하다. 물론 동일 패키지안에서는 모든게 허용이 된다
(앞에 생략되있는 접근제한자)
○ private : 동일한 패키지든 다른 패키지든 전부 접근이 불가하도록 하는 최고로 강력한 접근 제한자이고
현재 객체 내에서만 허용
(전부 접근 불가)
접근제한자 사용
- 클래스 : public, default
- 생성자 : public, protected, default, private
- 멤버변수 : public, protected, default, private
- 멤버메소드 : public, protected, default, private
- 지역변수 : 접근제한자 사용 불허
캡슐화란?
항상 은닉화를 전제로 합니다. 관련이 있는 데이터 그리고 동작들을 하나로 묶어 요약하고 사용자에게는 내부적인 접근을 허용하지 않는 대신에 사용의 편의성을 제공해 주는 것입니다.
- 데이터 보호의 장점 : 은닉화를 통해 데이터의 접근을 제어할 수 있습니다.
- 유지 보수성의 장점 : 객체에 대한 수정 작업으로 인해 객체 활용도에 문제가 발생한다면
제품 하나에 대한 upgrade가 상당히 부담스러울 것입니다. 자바에서는
각 기능을 하나의 모듈(부품)처럼 활용하여 객체간의 이식성이 높고
독립적인 면을 유지하는 장점이 있습니다.
- 사용자 편의성의 장점 : 전기 압력밥솥이 어떤 원리와 어떤 과정으로 밥을 지어내는지는
알 필요 없이 그냥 사용법만 익혀서 사용합니다.
ex) 돈을 입금할 때, 은행원에게 모든 동작을 넘겨줍니다. 그러면 사용자는 내부 동작을 생각할 필요 없이 목적한 일을 할 수 있습니다.
Sample Code
class Variable{
private int a; //은닉화
//캡슐화
public void setA(int n){
a = n;
}
public int getA(){
return a;
}
}
public class MethodTest2 {
public static void main(String[] args) {
Variable v = new Variable();
//System.out.println(v.a); //호출불가
v.setA(100);
System.out.println(v.getA());
}
}
출처:
https://gyrfalcon.tistory.com/entry/JAVA-접근-제한자 [Minsub's Blog]
hunit.tistory.com/162
'JAVA' 카테고리의 다른 글
[JAVA]Map이란? (HashMap, Hashtable, TreeMap) (3) | 2020.11.16 |
---|---|
[JAVA] @RequestBody와 @ResponseBody 분석 (0) | 2020.11.16 |
[JAVA] baseMap 분석 (수정) (0) | 2020.11.16 |
[JAVA] Call by value 와 Call by reference 차이 (0) | 2020.11.12 |
[JAVA] new 연산자란? (0) | 2020.11.12 |