"퍼블릭"의 두 판 사이의 차이
(→같이 보기) |
(→같이 보기) |
||
63번째 줄: | 63번째 줄: | ||
== 같이 보기 == | == 같이 보기 == | ||
* [[객체 지향 프로그래밍]] | * [[객체 지향 프로그래밍]] | ||
− | * [[ | + | * [[접근제어자]] |
2020년 8월 11일 (화) 14:16 판
객체 지향 프로그래밍(OOP)에서 접근 제한이 전혀 없이 어디에서나 접근 가능하도록 허용하는 제어자이다.
예를 들어, public int getHour() { … } 처럼 사용한다.
개요
자바에서는 변수와 함수, 클래스에 대한 접근을 제한하는 문법이 있다.
접근을 제한하는 이유는 객체가 가진 고유의 맴버 변수 값들이 외부에서 잘못 변경되는 것을 막기 위해서이다.
사전에 맴버 변수와 함수들의 성격을 규정하고 차단함으로써 의도치 않은 실수를 줄이기 위한 의도가 깔려있다.
총 4가지가 있는데 public과 private를 가장 많이 사용한다.
접근 허용 가능 순서는 다음과 같고, 접근 범위는 왼쪽부터 크다.[1]
public > protected > default > private
- public : 접근하는데 제한이 없음
- protected : 동일한 패키지 내에 존재하거나 파생클래스에서만 접근 가능
- default : 아무런 접근 제한자를 명시하지 않으면 default 값이 되며, 동일한 패키지 내에서만 접근이 가능
- private : 자기 자신의 클래스 내에서만 접근이 가능
특징
접근제어자가 public으로 설정되었다면 public 접근제어자가 붙은 변수, 메소드는 어떤 클래스에서라도 접근이 가능하다.
public이 붙은 변수나 메서드는 같은 프로젝트 안에서 사용가능하다.
다음은 하나의 프로젝트에 존재하는 패키지 A와 패키지 B의 코드이다.
//패키지 A package A; public class ClassA { public static String static = "static"; }
//패키지 B package B; import A.ClassA; public class ClassB { public static void main(String[] args) { ClassA.static = ""; } }
위와 같이 클래스를 import만 해주면 다른 패키지에서 접근이 가능하여 변수들을 사용할 수 있는 것을 확인 할 수 있다.[2]
접근제어자를 모두 public으로 설정해도 프로그램은 잘 동작할 것이다.
하지만 접근제어자를 이용하면 프로그래머의 코딩 실수를 방지할 수 있고 기타 위험요소를 제거할 수 있는 등의 많은 장점이 있다.[3]
필요성
접근 제어자를 사용하는 이유는 보안 때문이라고 할 수 있다.
만약에 웹사이트에서 아이디와 비밀번호 같은 중요한 정보를 public 변수에 저장을 한다면 아무데서나 직접적으로 접근하여 그 값을 변경할 수 있기 때문에 노출되기 쉽기 때문이다.
또한 여러 사람들과 함께 프로그램을 만들다 보면 다른 사람이 내가 만든 중요한 변수나 메서드를 무분별하게 사용하여 값을 변경할 수 있는데, 이를 막기 위해 상황에 맞는 접근 제어자를 사용해야 한다.
이렇게 중요한 변수와 메서드에 접근 제어자를 이용해 사용 범위를 지정해주면 완성도가 높은 프로그램을 완성할 수 있다.
각주
- ↑ 〈접근 제어자〉, 《접근 제어자》, 2018
- ↑ 〈접근 제어자(public)〉, 《심플한 코딩사전》, 2019-07-13
- ↑ 〈접근 제어자(public)〉, 《점프 투 자바》, 2017-09-11