"접근제어자"의 두 판 사이의 차이
greenwood26 (토론 | 기여) (→특징) |
|||
5번째 줄: | 5번째 줄: | ||
== 특징 == | == 특징 == | ||
− | === | + | === 퍼블릭 === |
− | 모든 접근을 허용한다. 외부의 모든 클래스 및 생성자, 메소드, 필드로부터 접근을 완전히 허용하고, 다른 개발자들에게 라이브러리처럼 공유하려고 할때 사용한다.<ref name="class">AraGrooveit, <[https://hunit.tistory.com/162 자바(Java) 접근 제한자 private/ protected/ public / default]>, <<개인 블로그>>, 2015-11-10</ref> 아래의 예제에서 [[멤버변수]] a와 method_public 메소드는 모든 클래스에서 사용할 수 있는 경우이다. 추가적으로 생성자는 반드시 public으로 | + | [[퍼블릭]](public)은 모든 접근을 허용한다. 외부의 모든 클래스 및 생성자, 메소드, 필드로부터 접근을 완전히 허용하고, 다른 개발자들에게 라이브러리처럼 공유하려고 할때 사용한다.<ref name="class">AraGrooveit, <[https://hunit.tistory.com/162 자바(Java) 접근 제한자 private/ protected/ public / default]>, <<개인 블로그>>, 2015-11-10</ref> 아래의 예제에서 [[멤버변수]] a와 method_public 메소드는 모든 클래스에서 사용할 수 있는 경우이다. 추가적으로 생성자는 반드시 public으로 선언해 주어야 하는데 public으로 선언해야만 클래스 외부에서 제한없이 호출할 수 있기 때문이다. |
class Public1 | class Public1 | ||
17번째 줄: | 17번째 줄: | ||
} | } | ||
− | === | + | === 프라이빗 === |
− | 현재 객체 내에서만 허용한다. 무조건 클래스 내부에서만 사용이 가능하기 때문에 동일 패키지에서는 private을 제외한 전부 접근 가능하다.<ref name="class"></ref> 멤버변수나 메소드 앞에 private을 붙이는 이유는 이후에 변경할 가능성이 있기 때문이다. private 멤버변수나 메소드는 나중에 내용을 변경해도 다른 클래스들에게는 아무 영향이 없기 때문에 편리하다. 아래의 예제는 멤버변수 b와 method_private는 내부에서 정의된 method_private 메소드에서만 사용이 가능하다. | + | [[프라이빗]](private)은 현재 객체 내에서만 접근을 허용한다. 무조건 클래스 내부에서만 사용이 가능하기 때문에 동일 패키지에서는 private을 제외한 전부 접근 가능하다.<ref name="class"></ref> 멤버변수나 메소드 앞에 private을 붙이는 이유는 이후에 변경할 가능성이 있기 때문이다. private 멤버변수나 메소드는 나중에 내용을 변경해도 다른 클래스들에게는 아무 영향이 없기 때문에 편리하다. 아래의 예제는 멤버변수 b와 method_private는 내부에서 정의된 method_private 메소드에서만 사용이 가능하다. |
class Private1 | class Private1 | ||
{ | { | ||
28번째 줄: | 28번째 줄: | ||
} | } | ||
+ | === 프로텍티드 === | ||
+ | [[프로텍티드]](protected)는 같은 패키지에 있는 객체와 상속관계의 객체들만 허용한다. 클래스 선언자체가 불가능하며 같은 패키지에 속해있는 클래스에서 생성자와 메소드, 필드(객체)만 호출 할 수 있고, 다른 패키지에 있는 생성자, 메소드, 필드는 호출하지 못하지만 상속관계에 있는 클래스라면 예외로 호출이 가능하다.<ref name="class></ref> | ||
− | === | + | === 디폴트(default) === |
− | + | [[디폴트]](default)는 같은 패키지(폴더)에 있는 객체들만 접근을 허용한다. 'friendly'라고도 부르며 다른 접근제어자를 선언하지 않았다면 기본적으로 선언되는 제어자이다. 다른 패키와의 클래스 선언과 생성자/메소드/필드의 호출이 불가능해지며 동일 패키지안에서는 모든 것이 허용된다.<ref name="class"></ref> | |
− | |||
− | |||
− | 같은 패키지(폴더)에 있는 객체들만 허용한다. 'friendly'라고도 부르며 다른 접근제어자를 선언하지 않았다면 기본적으로 선언되는 제어자이다. 다른 패키와의 클래스 선언과 생성자/메소드/필드의 호출이 불가능해지며 동일 패키지안에서는 모든 것이 허용된다.<ref name="class"></ref> | ||
:{|class=wikitable width=700 style="background-color:#ffffee" | :{|class=wikitable width=700 style="background-color:#ffffee" | ||
67번째 줄: | 66번째 줄: | ||
|align=center|O | |align=center|O | ||
|} | |} | ||
− | |||
{{각주}} | {{각주}} | ||
77번째 줄: | 75번째 줄: | ||
* AraGrooveit, <[https://hunit.tistory.com/162 자바(Java) 접근 제한자 private/ protected/ public / default]>, <<개인 블로그>>, 2015-11-10 | * AraGrooveit, <[https://hunit.tistory.com/162 자바(Java) 접근 제한자 private/ protected/ public / default]>, <<개인 블로그>>, 2015-11-10 | ||
− | == | + | == 같이 보기 == |
− | *[[제어자]] | + | * [[제어자]] |
− | *[[클래스]] | + | * [[클래스]] |
− | *[[생성자]] | + | * [[생성자]] |
+ | |||
+ | {{프로그래밍|토막글}} |
2020년 8월 11일 (화) 15:26 판
접근제어자란 자바 클래스에서 멤버들이 노출되는 것을 막기 위해 접근을 제한해주는 것을 말한다.[1]
개요
접근제어자는 객체지향언어(Object-oriented Programming)의 3대요소 중 하나로 말 그대로 접근을 제어하기 위해 사용하는 것이다. 모두가 접근 가능한 변수나 메소드는 제약 조건 없이 쉽게 데이터가 변경이 가능하기 때문에 데이터를 안정하게 변경하기 위해 접근을 할 수 있는 대상을 지정해 줄 때 사용한다.[2]
특징
퍼블릭
퍼블릭(public)은 모든 접근을 허용한다. 외부의 모든 클래스 및 생성자, 메소드, 필드로부터 접근을 완전히 허용하고, 다른 개발자들에게 라이브러리처럼 공유하려고 할때 사용한다.[3] 아래의 예제에서 멤버변수 a와 method_public 메소드는 모든 클래스에서 사용할 수 있는 경우이다. 추가적으로 생성자는 반드시 public으로 선언해 주어야 하는데 public으로 선언해야만 클래스 외부에서 제한없이 호출할 수 있기 때문이다.
class Public1 { public int a; public void method_public() { i=100; } }
프라이빗
프라이빗(private)은 현재 객체 내에서만 접근을 허용한다. 무조건 클래스 내부에서만 사용이 가능하기 때문에 동일 패키지에서는 private을 제외한 전부 접근 가능하다.[3] 멤버변수나 메소드 앞에 private을 붙이는 이유는 이후에 변경할 가능성이 있기 때문이다. private 멤버변수나 메소드는 나중에 내용을 변경해도 다른 클래스들에게는 아무 영향이 없기 때문에 편리하다. 아래의 예제는 멤버변수 b와 method_private는 내부에서 정의된 method_private 메소드에서만 사용이 가능하다.
class Private1 { private int b; private void method_private() { d=200; } }
프로텍티드
프로텍티드(protected)는 같은 패키지에 있는 객체와 상속관계의 객체들만 허용한다. 클래스 선언자체가 불가능하며 같은 패키지에 속해있는 클래스에서 생성자와 메소드, 필드(객체)만 호출 할 수 있고, 다른 패키지에 있는 생성자, 메소드, 필드는 호출하지 못하지만 상속관계에 있는 클래스라면 예외로 호출이 가능하다.[3]
디폴트(default)
디폴트(default)는 같은 패키지(폴더)에 있는 객체들만 접근을 허용한다. 'friendly'라고도 부르며 다른 접근제어자를 선언하지 않았다면 기본적으로 선언되는 제어자이다. 다른 패키와의 클래스 선언과 생성자/메소드/필드의 호출이 불가능해지며 동일 패키지안에서는 모든 것이 허용된다.[3]
접근 여부[4] 종류 동일 클래스 하위 클래스 동일 패키지 외부 패키지(클래스) private O X X X (default) O X O X protected O O O X public O O O O
각주
- ↑ Gyrfalcon, <JAVA 접근 제한자 (public, private, protected, defalult)>, <<개인 블로그>>, 2014-02-27
- ↑ KOU, <접근제한자, 접근제어자...>, <<개인 블로그>>, 2020-06-04
- ↑ 3.0 3.1 3.2 3.3 AraGrooveit, <자바(Java) 접근 제한자 private/ protected/ public / default>, <<개인 블로그>>, 2015-11-10
- ↑ 규밍, <[java 접근제한자 public, private, protected, default]>, <<개인 블로그>>, 2019-05-21
참고자료
- Gyrfalcon, <JAVA 접근 제한자 (public, private, protected, defalult)>, <<개인 블로그>>, 2014-02-27
- 규밍, <[java 접근제한자 public, private, protected, default]>, <<개인 블로그>>, 2019-05-21
- KOU, <접근제한자, 접근제어자...>, <<개인 블로그>>, 2020-06-04
- AraGrooveit, <자바(Java) 접근 제한자 private/ protected/ public / default>, <<개인 블로그>>, 2015-11-10
같이 보기