접근 제어자(access modifier)
외부에 대한 접근을 제어하는 문법을 접근 제어자(access modifier)라고 한다.
보통 변수나 함수, 클래스앞에 접근 제어자를 붙이고 접근 허용 범위를 관리한다.
접근 제어자는 크게 4가지로 분류된다.
private,default,protected,public
private
private을 사용할 경우, 그에 해당하는 함수나 변수, 클래스는 해당 클래스에서만
접근할 수 있다. 즉 클래스 외부에서 사용할 수 없고 해당 클래스내에서만 사용할 수 있다.
- 같은 패키지, 같은 클래스
public class PrivateClass{
private int private_num = 10; //PrivateClass 내에서만 접근 가능
private String private_str = "private"; //PrivateClass 내에서만 접근 가능
private String getPirvate(){
return this.private_str; //같은 클래스 내에 있는 변수를 함수로 접근 가능
}
}
default
이는 같은 패키지 내에서만 접근이 가능하다. default는 따로
접근 제어자를 입력할 필요가 없다.
- 같은 패키지, 다른 클래스
package seungWon.defaultone;
class DefaultClass{
int year = 2019;
}
public class DefaultTwoClass{
int month = 9;
int day = 14;
public static void main(String []args){
System.out.println(year+"."+month+"."+day);
//같은 패키지,다른 클래스에 있는 변수 호출가능
}
}
protected
default와 같이 같은 패키지에서 접근이 가능하다. 하지만 다른 패키지에서 사용할 수 있는 경우가 있다.
다른 패키지에 상속받는 부모 클래스가 있을 때 접근이 가능하다.
- 다른 패키지, 상속받은 클래스
package seungWon.protectedone;
public class ProtectedClass{
int year = 2019;
}
package seungWon.protectedtwo;
import protectedone.ProtectedClass;
public class MainClass extends ProtectedClass{
int month = 9;
int day = 14;
public static void main(String []args){
System.out.println(year+"."+month+"."+day);
//다른 패키지,상속한 클래스에 있는 변수 호출가능
}
}
public
public은 어디에서나 접근이 가능하다.따라서 사용하기 편할 수 있지만
정보가 노출되어 있다는 단점이 있다.
- 다른 패키지,다른 클래스
package seungWon.publicone;
public class PublicClass{
int year = 2019;
}
package seungWon.publictwo;
public class MainClass{
int month = 9;
int day = 14;
public static void main(String []args){
System.out.println(year+"."+month+"."+day);
//다른 패키지,다른 클래스에 있는 변수 호출가능
}
}
이처럼 접근 제어자는 각자 장단점이 있고 이를 잘 활용하여 코드를 짜야 한다.
public - 모두 다
protected - 동일 패키지, 상속
default - 동일 패키지
private - 동일 클래스
'대외 활동 > CADI(개발A 보충스터디)' 카테고리의 다른 글
CustomListView - 1(java) (0) | 2020.10.27 |
---|---|
빌더 패턴(Builder Pattern)이란 ? (0) | 2020.09.22 |
안드로이드 intent 란 무엇인가? (0) | 2020.09.10 |
Git Bash 설치 및 Git 주요 명령어 정리 (0) | 2020.09.08 |
자기소개 앱 만들기! (0) | 2020.09.08 |