반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 직장인재태크
- AI투자
- 핀트
- 개발
- 핀트투자
- 핀트 수익률
- 재태크
- 웹
- 웹개발
- 직장인소액투자
- 자바
- 자바문법
- 자동투자
- 소액투자
- 직장인 소액투자
- 핀트후기
- Java
- 인텔리제이
- 예외
- fint 수익률
- 자바기초
- 로보어드바이저
- 직장인부업
- 핀트수익률
- fint후기
- 핀트 후기
- fint
- 핀트투자후기
- 코틀린
- git
Archives
- Today
- Total
하루하루 살아남기
[Java / 자바] 접근제한자 본문
반응형
캡슐화
변수와 클래스를 하나로 묶는 작업을 캡슐화 라고 합니다.. 캡슐화를 하는 이유는, 클래스의 담는 내용 중 중요한 데이터나 기능을 외부에서 접근하지 못하게 하기위해 사용합니다. 이 캡슐화에 사용되는 것이 접근제한자이다. 접근 제한자는 다음 4가지가 있습니다.
- public - 어떤 클래스던 간에 접근 가능
- protected - 같은 패키지인 경우만 접근을 허용, 상속을 받은 다른 패키지의 접근 허용
- private - 자기 자신만 접근 가능
- default - 자기 자신과 같은 패키지에서 접근 가능 (접근자를 아무것도 쓰지 않았을 때)
위 접근제한자를 하나씩 써서 클래스를 만들어 보겠습니다.
public class Encapsulation {
public int pulblicInt = 10;
protected int protectedInt = 20;
private int privateInt = 30;
int defaultInt = 40;
}
먼저 같은 패키지 내부에서 각 필드를 호출해 보겠습니다.
package JavaBase.Day19;
public class EncapsuationTestClass {
public static void main(String[] args) {
Encapsulation encapsulation = new Encapsulation();
System.out.println(encapsulation.pulblicInt);
System.out.println(encapsulation.protectedInt);
System.out.println(encapsulation.defaultInt);
System.out.println(encapsulation.privateInt);
}
}
11번째줄에서 에러가 납니다. private 접근자는 자기 자신만 접근이 가능하기 때문입니다.
이번에는 다른 클래스에서 똑같이 호출해 보겠습니다.
package JavaBase.Day18;
import JavaBase.Day19.Encapsulation;
public class EncapsulationTestClass2 {
public static void main(String[] args) {
Encapsulation encapsulation = new Encapsulation();
System.out.println(encapsulation.pulblicInt);
System.out.println(encapsulation.protectedInt);
System.out.println(encapsulation.defaultInt);
System.out.println(encapsulation.privateInt);
}
}
Day19 패키지가 아닌 Day18클래스에 TestClass2를 만들고 필드를 호출해보았습니다.
protect 접근자는 같은 패키지 또는 상속을 받은 다른 패키지의 접근만을 허용하므로 에러가 납니다.
defualt 접근자는 자기자신 또는 자기자신과 같은 패키지 안에서의 접근만 허용하므로 에러가납니다.
private접근자는 자기자신 또는 같은 패키지안에서의 접근만 허용하므로 에러가 납니다.
TestClass2에 Encapsulation클래스를 상속받아보겠습니다.
public class EncapsulationTestClass2 extends Encapsulation {
public static void main(String[] args) {
EncapsulationTestClass2 encapsulation = new EncapsulationTestClass2();
System.out.println(encapsulation.pulblicInt);
System.out.println(encapsulation.protectedInt);
System.out.println(encapsulation.defaultInt);
System.out.println(encapsulation.privateInt);
}
}
TestClass2는 Encapsulation클래스를 상속받았기 때문에 Encapsulaton의 필드를 사용할수 있습니다. 단, public과 protected에 한정합니다. default 접근자는 자기자신또는 자기 자신과 같은 패키지안에서만 접근을 허용하기에 에러가 발생합니다.
728x90
반응형
'개발 > Java' 카테고리의 다른 글
[Java / 자바 ] Super (0) | 2021.03.25 |
---|---|
[Java / 자바] 추상 클래스 (0) | 2021.03.23 |
[Java / 자바 ] 상속 (0) | 2021.03.17 |
[Java / 자바] 패키지(Pakage) (0) | 2021.03.16 |
[Java / 자바] 생성자 오버로딩(Constructor Overloading) (0) | 2021.03.15 |
Comments