접근 제어자 (access modifier)
접근제어자에 대해서 배워볼 것이예요.
접근제어자란 무엇인가?
접근제어자는 우리가 자바에서 클래스(class)를 만들 때 맨 앞에 보이는
public class Helloworld{}
public ← 이것은 접근제어자 중 하나의 종류이다.
접근제어자를 배우기 전에 제어자 알아봐요.
제어자(modifier)
사전적으로 제어자란 객체 지향 프로그래밍(OOP)에서
클래스, 변수 또는 메소드의 선언부에 함께 사용되어 부가적인 의미를 부여합니다.
< 여기서 객체 지향 프로그래밍 언어로는 대표적으로 자바, C#, C++ 이 있어요. >
여기서 '클래스'와 '메소드'는
public class Helloworld{
public static void main(String[] args){
System.out.println("Hello world!!");
}
}
위의 코드에서 public class Helloworld 가 Helloworld라는 클래스이고
public static void main(String[] args) 가 main 메소드예요.
그러니까 앞에서 저는 public을 보고 접근제어자 중 하나의 종류라는 말보다는
제어자 중에서 접근제어자인데 그 중에서 public이라는 종류의 제어자라고 말했어야 했네요.
+ 추가적으로 +
'제어자'는 기본적으로 큰 틀로 자바에서 제어자는 '접근제어자'와 '기타제어자'로 나뉘어요.
또한 하나의 대상에 대해 여러 제어자를 조합하여 사용하는 것이 가능해요. 신기하죠?
단, 접근제어자의 경우 하나만 선택해서 사용해야 해요.ㅇ
인용 : wiki.hash.kr/index.php/제어자
접근 제어자 (access modifier)
접근 제어자는
자바 클래스에서 멤버들이 노출되는 것을 막기 위해 접근을 제한해주는 제어자를 말해요.
모두가 접근 가능한 변수나 메소드는 제약 조건 없이 쉽게 데이터가 변경이 가능하기에
데이터를 안전하게 변경하기 위해 접근을 할 수 있는 대상을 지정해 줄 때 사용해요.
자바에서는 이러한 정보 은닉을 위해 접근 제어자라는 기능을 제공하고 있어요.
여기에 부연 설명을 하면
맴버(member)는
구성원이라는 뜻인데 객체도 변수와 메소드라는 구성원이 있어요.
정보 은닉(data hiding)은
사용자가 굳이 알 필요가 없는 정보는 사용자로부터 숨겨야 한다는 개념이예요.
사용자는 언제나 최소한의 정보만으로 프로그램을 손쉽게 사용하게 되요.
접근 제어자는 접근 제한자라고도 하는데
접근 제한자라고 쓰는 것이 이해하기도 좋네요.
추가적으로 접근 제어자의 종류는
같은 클래스 안에서만 접근 가능한 private
같은 패키지 안에서만 접근 가능한 default
같은 패키지 또는 다른 패키지의 자식 클래스에서 접근 가능한 protected
접근제한이 아에 없는 public
이렇게 4개로 나뉘어요.
평소에 많이쓰는 public은 접근 제한이 없는 제어자였네요.
그에 반하여 private은 접근 제한이 매우 철저하네요.
인용 : http://wiki.hash.kr/index.php/접근제어자
http://www.tcpschool.com/java/java_modifier_accessModifier
제어자 | 같은 클래스 | 같은 패키지 | 하위 클래스 | 전체 |
Private | O | X | X | X |
Default | O | O | X | X |
Protected | O | O | O | X |
Public | O | O | O | O |
이것으로 블로그 포스팅은 마치겠습니다.
감사합니다.
'과제' 카테고리의 다른 글
자바 - 클래스명과 파일명 (1) | 2021.03.14 |
---|---|
자바 응용프로그램을 개발할때는 JDK? JRE? (0) | 2021.03.14 |
JAVA 과제 - java, jsp, javascript 차이 - JVM 구성 - servlet, jsp, spring 차이 - 캡슐화, 상속, 다형성이란? (0) | 2021.03.11 |
IT, 최근 가장 많이 쓰는 프로그래밍언어와 특징, 인공지능, 빅데이터 언어 (과제) (0) | 2021.03.11 |
리눅스 GNU선언문 요약 (1) | 2021.03.11 |