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
- abex'crackme
- 리버싱
- Java
- vector
- Mac
- 자바
- 스위치
- 라우터
- 크롤러
- bastion host
- Firewall
- Repository
- 머신러닝 프로세스
- Python
- cmd
- 인공지능
- Screening Router
- RIP
- docker
- AWS
- Reversing
- vlan
- STP
- 암호학
- CISCO
- 머신러닝
- 네트워크
- AI
- dreamhack
- 온프레미스
Archives
- Today
- Total
Haekt‘s log
[JAVA] 접근 제어 본문
자바의 접근 제어에는 4가지가 존재한다.
- public
- protected
- private
- default (friendly)
- public
외부의 모든 클래스, 패키지, 생성자, 필드로부터 모든 접근을 허용한다 .
라이브러리처럼 공유하여 사용하고 싶을 때 사용한다.
- protected
상속받은 자식만 접근할 수 있도록 한다.
- private
자신이 있는 클래스 외 다른 접근을 전부 금지한다.
가장 강력한 접근제어자 이다.
- default (friendly)
변수나 함수 앞에 아무것도 쓰지 않았을 경우로, 동일 패키지 안에서는 접근이 허용된다.
- 예시
package pk;
public class Fa2 { // public 을 안붙이면 import 를 다른 파일에서 할수없음
public int a=1; // 모두 접근가능
protected int b=2; // 상속받은 자식만 접근가능
int c=3; // (default) 같은 패키지만 접근가능
private int d=4; // 이 클래스 외 접근금지
}
위 코드를 Fa2.java 로 저장을 해 줬다.
다른 패키지의 클래스에서 이 Fa2 클래스를 상속해 보자.
package first;
import pk.Fa2;
public class Fa extends Fa2 {
public static void main(String[] args)
{
Fa f= new Fa();
System.out.println(f.a);
System.out.println(f.b);
System.out.println(f.c);
System.out.println(f.d);
Fa2 p=new Fa2();
System.out.println(p.a);
System.out.println(p.b);
System.out.println(p.c);
System.out.println(p.d);
}
}
위 코드는 다른 패키지로, 앞서 만들었던 Fa2.java 파일을 import하고, 그안에 있던 Fa2 클래스를 상속하는 코드이다.
* extends 는 부모를 상속한다는 뜻
이클립스에서 살펴보니 Fa 클래스에선 default인 C 와 private 였던 d 가 오류가 난다.
10번줄, 11번줄, 16번줄, 17번줄 오류
c가 오류난 이유는 Fa.java 는 Fa2.java와 다르게 first 라는 패키지에 포함되어있기 때문이다.
그래서 같은 패키지 에서만 접근이 가능한 C가 오류가 나는 것이다.
d가 오류난 이유는 private은 같은 자신이 위치한 클래스 내에서만 접근이 가능하기 때문이다.
그래서 d가 오류가 났던 것이다.
15번줄 오류
b가 오류난 이유는 Protected는 상속받은 자식만 접근이 가능한데,
상속받은 Fa 가 아닌 Fa2 에서 접근하려고 했기 때문이다.
'언어 > JAVA' 카테고리의 다른 글
[JAVA] 추상 메소드 abstract란? (0) | 2022.10.03 |
---|---|
[JAVA] interface란? (1) | 2022.10.03 |
[JAVA] 변수 상수 처리하기 (1) | 2022.10.03 |
[JAVA] 스캐너 클래스를 이용한 인수 입력 & args 입력 (1) | 2022.10.03 |
[JAVA] 예외처리( Exception ) 하는법 (1) | 2022.10.02 |
Comments