[JAVA] 학습 노트 (3) - 접근 권한 제어

하나
가방: 라 이브 러 리 유닛.
a)
가방 을 가 져 오 려 는 이 유 는 이름 공간 을 관리 하 는 메커니즘 을 제공 하기 위해 서 입 니 다. 모든 종류의 구성원 의 이름 은 서로 격 리 됩 니 다.
b)
모든 자바 소스 코드 파일 은 하나의 컴 파일 유닛 에 대응 합 니 다. 컴 파일 유닛 마다 Public 클래스 만 있 을 수 있 습 니 다. 그렇지 않 으 면 컴 파일 러 가 잘못 보 고 됩 니 다.컴 파일 유닛 내부 의 다른 종 류 는 가방 밖에서 이러한 종 류 를 볼 수 없습니다. 왜냐하면 그들 은 Public 류 가 아니 라 주로 Public 류 에 지원 을 제공 하기 때 문 입 니 다.
c)
자바 의 실행 가능 한 프로그램 은 자바 문서 파일 (JAR) 로 압축 할 수 있 는. class 파일 입 니 다.
d)
클래스 MyClass 를 패키지 / 라 이브 러 리 파일 mypackage 에 추가 하기 위해 서 는 해당 컴 파일 단원 에 주석 을 제외 한 첫 줄 에 가입 해 야 합 니 다
package package_name;

자바 이름 규칙 에서 가방 은 모두 소문 자 를 사용 합 니 다.
이 종 류 를 사용 할 때 가입 해 야 합 니 다.
import mypackage.MyClass;

e)
동시에 가 져 온 두 가방 에 같은 클래스 가 두 개 포함 되 어 있 으 면 클래스 대상 을 만 들 때 패키지 이름 을 추가 하여 잘못된 의 미 를 해결 해 야 합 니 다.예:
java.util.Vector v = new java.util.Vector();

f)
import static:
e.g.
import static java.lang.System.out;
public class Type {
	int i;
	double d;
	int get() {
		return this.i;
	}
	public static void main(String[] args) {
	<span style="white-space:pre">	</span>Type t = new Type();
	<span style="white-space:pre">	</span>out.println(t.get());
<span style="white-space:pre">	</span>}
}

이 예 는 System 클래스 의 out 대상 을 정적 으로 가 져 옵 니 다.
주의: Integer 와 Long 에 MAX 가 있 는 모호 한 정적 가 져 오 는 것 을 방지 해 야 합 니 다.VALUE 상수.
g)
import 로 행동 변경
C 언어 에는 조건 부 컴 파일 기능 (예 를 들 어 \ # IFNDEF, \ # DEFINE, \ # ENDIF 등) 이 있 는데 코드 를 바 꾸 지 않 고 스위치 전환 을 통 해 서로 다른 행 위 를 할 수 있 고 가끔 은 크로스 플랫폼 문 제 를 해결 하 는 데 사용 된다.한편, 자바 는 크로스 플랫폼 문제 가 존재 하지 않 습 니 다. 조건 컴 파일 은 import 로 이 루어 질 수 있 습 니 다. 예 를 들 어 두 개의 패키지 debug 와 debugoff 는 모두 같은 종류 가 있 고 하나의 debug 방법 을 포함 하여 import 를 통 해 서로 다른 효 과 를 실현 할 수 있 습 니 다.
h)
가방 을 만 들 때 가방 이름 을 지정 할 때 디 렉 터 리 구 조 를 은밀히 확 정 했 습 니 다. 이 가방 은 이 디 렉 터 리 에 있 고 이 디 렉 터 리 는 CLASSPATH 에 있 습 니 다.
둘째,
접근 권한 수식 어.
a)
패키지 접근 권한: 접근 권한 수식 어 를 제공 하지 않 을 때.가방 의 모든 다른 종 류 는 이 구성원 에 게 접근 권한 이 있 지만 이 가방 이외 의 모든 종 류 는 private 입 니 다.
같은 디 렉 터 리 에 있 는 컴 파일 러 가 가방 이름 을 설정 하지 않 았 을 때 이 디 렉 터 리 에 있 는 모든 컴 파일 러 는 기본 패키지 로 여 겨 집 니 다.
b)
public 인터페이스 접근 권한: 모두 접근 할 수 있 습 니 다.
c)
private 개인 접근 권한: 같은 가방 의 다른 클래스 에 도 접근 할 수 없습니다.
용도:
i.
다 중 스 레 드 환경 에서 접근 제어 하기;
ii.
제어 대상 의 생 성 은 구조 기 부분 / 전 부 를 private 로 설정 하고 제공 하 는 다른 인 터 페 이 스 를 통 해 만 대상 을 만 들 수 있 습 니 다.
iii.
구조 기 를 private 로 설정 하면 클래스 의 계승 을 막 을 수 있 습 니 다.
d)
proctected 계승 접근 권한: 이 종류의 파생 클래스 만 접근 할 수 있 습 니 다.
셋째,
인터페이스 와 실현.
a)
패키지: 데이터 와 방법 을 클래스 에 포장 하고 구체 적 인 실현 을 숨 깁 니 다.
b)
접근 권한 제어 가 권한 의 경 계 를 데이터 형식의 내부 로 그 었 습 니 다. 원인:
i.
사용 할 수 있 고 사용 할 수 없 는 경 계 를 설정 해 야 합 니 다.
ii.
인터페이스 와 구체 적 인 분 리 를 실현 하고 내부 코드 는 바 뀌 지만 인터페이스 가 변 하지 않도록 확보한다.
넷,
클래스 접근 권한.
클래스 는 패키지 접근 권한 과 Public 두 개의 접근 권한 만 있 습 니 다.다른 사람 이 클래스 에 접근 할 수 있 는 권한 을 가지 지 않 으 려 면 구조 기 를 private 로 지정 하면 됩 니 다. 이 때 는 클래스 내부 의 정적 static 구성원 함수 만 생 성 할 수 있 습 니 다.두 가지 방법 이 있다.
i.
class Soup1 {
	private Soup1() {}
	public static Soup1 makeSoup() {
		return new Soup1();
	}
}

몇 개의 soup 1 대상 을 만 들 었 는 지 기록 할 수 있 습 니 다.
ii.
class Soup2 {
	private Soup2() {}
	private static Soup2 s2 = new Soup2();
	public static Soup2 access() {
		return s2;
	}
}

이 방법 은 디자인 모델 을 사용 하여 singelton 단일 사례 라 고 부 르 며 만 든 대상 만 있 고 access () 를 통 해 만 접근 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기