[JAVA] 접근제한자(Public, Protected, Private, Default)
@욕심쟁이
·2020. 8. 18. 12:49
접근제한자란?
- 클래스 또는 인터페이스의 멤버에 접근을 제한하는 키워드
- 접근이란 클래스 및 인터페이스 그리고 이들이 가지고 있는 멤버의 접근
- 4가지(public, protected, (default), private) 로 구성되며
- default 접근제한자는 별도의 키워드 없이 변수 또는 메서드 선언
- public 접근제한자 : 단어 뜻 그대로 외부 클래스가 자유롭게 사용할 수 있도로 함
- protected 접근제한자 : 같은 패키지 또는 자식클래스에서 사용할수 있도록 함
- private 접근제한자 : 단어 듯 그대로 개인적인 것이라 외부에서 사용 될 수 없도록 함.
- (자신의 class에서만 사용가능 getter/setter를 사용하여 넣고 꺼내기 가능)
- default 접근제한자 : 같은 패키지에 소속된 클래스 에서만 사용
- (위세가지 접근제한자가 적용되지않으면 defualt접근제한을 가짐)
속성 | 설명 |
---|---|
public 접근제한자 | 외부 클래스가 자유롭게 호출할 수 있도로 함 |
protected 접근제한자 | 같은 패키지 또는 자식클래스에서 호출 할 수 있도록 함 |
private 접근제한자 | 자신의 클래스에서만 접근 가능하도록 지정 (다른 클래스에서 접근 불가능하도록 지정) |
default 접근제한자 |
같은 패키지에 소속된 클래스에서만 사용(다른패키지X) |
- 주로, 클래스 내의 멤버변수는 private 접근제한자를 사용하여 외부에서 접근할 수 없도록
(내부에서만 접근 가능하도록) 제한하고 public 으로 선언된 Getter/Setter 메서드를 통해
간접적으로 멤버변수에 접근할 수 있도록 한다.
- 객체지향 특징 중 E(Encapsulation, 캡슐화 = 은닉성)에 해당함
접근제한이 강화
public < protected < default < private
1. 클래스의 접근제한
- 클래스를 선언할때 해당 클래스의 같은 패키지 내에서만 사용할 것인지 아니면
다른패키지에서도 사용할 수 있도록 할것인지 결정
- public, default 두가지 접근제한을 가짐
1) default 접근제한자
- 클래스 선언시 public을 생략했다면 클래스는 defult접근제한을 가짐
pakage p1
class A{} //한 패키지 클래스내에서 B에 A를 자져다 쓸수있지만 다른 패키지 클래스에선 사용안됨
class B{
A a;
}
pakage p2
class C{
//A a;// 다른 패키지 내에서 사용 불가능
}
2) public 접근제한자
- 클래스 선언시 public 접근 제한자를 붙였다면 클래스는 public접근제한을 가짐
- 한 패키지 내 뿐만 아니라 다른 패키지에서도 아무런 제한없이 사용가능
pakage p1
public class A{}
class B{
A a;
}
pakage p2
class C{
A a;// 다른 패키지 내에서도 사용가능
}
2.생성자의 접근제한
- 객체를 생성하기 위해 new연산자로 생성자를 호출
- 어디에서나 호출 가능X
- 어떤 접근제한자를 갖느냐에 따라 호출여부 결정
- public, protected, default, private 접근제한을 가짐
public class ClassName{
public CalssN(){} //public 접근제한
protected CalssN(){} //protected 접근제한
CalssN(){} //defualt 접근제한
private CalssN(){} //private접근제한
}
'IT > JAVA' 카테고리의 다른 글
[JAVA] 메서드 오버로딩 2탄 (0) | 2020.08.19 |
---|---|
[JAVA] 메서드 오버로딩 1탄 (0) | 2020.08.19 |
[JAVA]멤버변수(필드) (0) | 2020.08.12 |
[JAVA] 객체지향프로그래밍(OOP) 2 (0) | 2020.08.12 |
[JAVA] 객체지향프로그래밍(OOP) 1 (0) | 2020.08.12 |