Java Language는 주로 다음 두 가지 범주로 나뉘어져있는 많은 수정자를 제공합니다.
수정자는 클래스, 메소드 또는 변수를 정의하는 데 사용되며 일반적으로 문의 앞쪽 끝에 배치됩니다. 다음 예제를 사용하여 다음을 설명하겠습니다.
공개 클래스 클래스 이름 {// ...} private boolean myflag; 정적 최종 이중 주 = 9.5; 보호 된 정적 최종 int boxwidth = 42; public static void main (String [] arguments) {// method body}액세스 제어 수정 자
Java에서는 액세스 컨트롤을 사용하여 클래스, 변수, 방법 및 생성자에 대한 액세스를 보호 할 수 있습니다. Java는 4 가지 액세스 권한을 지원합니다.
기본값이라고도하는 기본값은 수정자를 사용하지 않고 동일한 패키지 내에서 볼 수 있습니다.
개인 수정 자로 지정된 개인, 동일한 클래스 내에서 볼 수 있습니다.
공개 수정 자에 의해 지정된 공통적 인 공통 모든 클래스에 보입니다.
보호 된 수정 자로 지정된 보호, 클래스 및 동일한 패키지 내의 모든 서브 클래스에 표시됩니다.
기본 액세스 수정 자 - 키워드가 사용되지 않습니다
기본 액세스 수정 자로 선언 된 변수 및 메소드는 동일한 패키지 내의 클래스에 표시됩니다. 인터페이스의 모든 변수는 암시 적으로 공개 정적 최종으로 선언되며 인터페이스의 메소드는 기본적으로 공개됩니다.
예:
다음 예에서 볼 수 있듯이 변수 및 방법의 선언은 수정자가 없을 수 있습니다.
문자열 버전 = "1.5.1"; 부울 프로세서 서 () {return true;}개인 액세스 수정 자 - 개인
개인 액세스 수정자는 가장 엄격한 액세스 수준이므로 개인으로 선언 된 메소드, 변수 및 생성자는 자신이 속한 클래스에 의해서만 액세스 할 수 있으며 클래스와 인터페이스는 개인으로 선언 할 수 없습니다.
개인 액세스 유형으로 선언 된 변수는 클래스의 공개 게터 방법을 통해 외부 클래스에서만 액세스 할 수 있습니다.
개인 액세스 수정자를 사용하는 것은 주로 클래스의 구현 세부 사항을 숨기고 클래스의 데이터를 보호하는 데 사용됩니다.
다음 클래스는 개인 액세스 수정자를 사용합니다.
공개 클래스 로거 {개인 문자열 형식; public String getformat () {return this.format; } public void setformat (문자열 형식) {this.format = 형식; }}이 예에서 로거 클래스의 형식 변수는 개인 변수이므로 다른 클래스는 변수의 값을 직접 얻고 설정할 수 없습니다. 다른 클래스가 변수를 조작 할 수 있도록하기 위해 두 가지 공개 메소드가 정의됩니다.
공개 액세스 수정 자 - 공개
대중으로 선언 된 클래스, 방법, 생성자 및 인터페이스는 다른 클래스에서 액세스 할 수 있습니다.
서로 액세스하는 여러 공개 클래스가 다른 패키지로 배포되면 해당 공개 클래스가있는 패키지를 가져와야합니다. 클래스의 상속으로 인해 클래스의 모든 공개 방법과 변수는 서브 클래스에 의해 상속 될 수 있습니다.
다음 기능은 공개 액세스 제어를 사용합니다.
public static void main (String [] arguments) {// ...}Java 프로그램의 메인 () 메소드는 공개적으로 설정해야합니다. 그렇지 않으면 Java 통역사가 클래스를 실행할 수 없습니다.
보호 된 액세스 수정 자 - 보호
보호 된 것으로 선언 된 변수, 방법 및 생성자는 동일한 패키지의 다른 클래스 또는 다른 패키지의 서브 클래스로 액세스 할 수 있습니다.
보호 된 액세스 수정자는 클래스와 인터페이스를 수정할 수 없습니다. 방법과 멤버 변수는 보호 된 것으로 선언 할 수 있지만 인터페이스의 멤버 변수 및 멤버 메소드는 보호 된 것으로 선언 할 수 없습니다.
서브 클래스는 보호 된 수정자가 선언 한 메소드 및 변수에 액세스하여 관련없는 클래스가 이러한 방법 및 변수를 사용하지 못하게 할 수 있습니다.
다음 상위 클래스는 보호 된 액세스 수정자를 사용하고 서브 클래스는 상위 클래스의 OpenSpeaker () 메소드를 과부하시킵니다.
클래스 오디오 플레이어 {Protected Boolean OpenSpeaker (Speaker SP) {// 구현 세부 사항}} 클래스 StreamingAudioPlayer {Boolean OpenSpeaker (Speaker SP) {// 구현 세부 사항}}OpenSpeaker () 메소드가 비공개로 선언되면 AudioPlayer 이외의 클래스는 메소드에 액세스 할 수 없습니다. OpenSpeaker ()가 공개적으로 선언되면 모든 클래스가 메소드에 액세스 할 수 있습니다. 메소드가 클래스의 서브 클래스에만 표시되기를 원한다면, 방법을 보호 된 것으로 선언하십시오.
액세스 제어 및 상속
다음 상속 규칙에 유의하십시오.
비 액세스 수정 자
다른 기능을 구현하기 위해 Java는 많은 비 액세스 수정자를 제공합니다.
정적 수정자는 클래스 메소드 및 클래스 변수를 만드는 데 사용됩니다.
최종 수정자는 클래스, 메소드 및 변수를 수정하는 데 사용됩니다. Final에 의해 수정 된 클래스는 상속 될 수 없으며, 수정 된 방법은 상속 클래스에 의해 재정의 될 수 없으며 변수 수정 된 변수는 상수이며 수정할 수 없습니다.
추상 수정자는 추상 클래스와 추상 방법을 만드는 데 사용됩니다.
동기화 및 휘발성 수정자는 주로 스레드 프로그래밍에 사용됩니다.
정적 수정 자
정적 키워드는 객체와 무관하게 정적 변수를 선언하는 데 사용됩니다. 클래스가 인스턴스화하는 객체의 수에 관계없이 정적 변수의 사본은 단 하나뿐입니다. 정적 변수를 클래스 변수라고도합니다. 로컬 변수는 정적 변수로 선언 할 수 있습니다.
정적 키워드는 객체와 무관하게 정적 메소드를 선언하는 데 사용됩니다. 정적 메소드는 클래스의 비 정적 변수를 사용할 수 없습니다. 정적 메소드는 매개 변수 목록에서 데이터를 가져온 다음 데이터를 계산합니다.
클래스 변수 및 메소드에 대한 액세스는 classname.variabelename 및 classname.methodname을 사용하여 직접 액세스 할 수 있습니다.
다음 예에서 볼 수 있듯이 정적 수정자는 클래스 메소드 및 클래스 변수를 생성하는 데 사용됩니다.
공개 클래스 InstanceCounter {private static int numinstances = 0; 보호 된 정적 int getCount () {return numinstances; } private static void addinstance () {numinstances ++; } instanceCounter () {instanceCounter.AddInstance (); } public static void main (string [] arguments) {System.out.println ( "" + instanceCounter.getCount () + "instances"로 시작); for (int i = 0; i <500; ++ i) {new instanceCounter (); } system.out.println ( "생성 된" + instanceCounter.getCount () + "instances"); }}위의 예는 다음과 같이 실행되고 편집됩니다.
0 인스턴스로 시작했습니다
500 인스턴스를 만들었습니다
최종 수정 자
최종 변수 :
최종 변수는 명시 적으로 초기화 될 수 있으며 한 번만 초기화 할 수 있습니다. 최종으로 선언 된 개체에 대한 참조는 다른 객체를 가리킬 수 없습니다. 그러나 최종 객체의 데이터를 변경할 수 있습니다. 다시 말해, 최종 객체에 대한 참조는 변경 될 수 없지만 내부의 값을 변경할 수 있습니다.
최종 수정자는 일반적으로 정적 수정 자와 함께 사용하여 클래스 상수를 생성합니다.
예:
공개 클래스 테스트 {최종 int value = 10; // 아래는 일정한 공개 정적 최종 int boxwidth = 6을 선언하는 예입니다. 정적 최종 문자열 제목 = "관리자"; public void changeValue () {value = 12; // 오류가 출력됩니다}}최종 방법
클래스의 최종 방법은 서브 클래스에 의해 상속 될 수 있지만 서브 클래스로 수정할 수는 없습니다.
최종 방법을 선언하는 주요 목적은 메소드의 내용이 수정되는 것을 방지하는 것입니다.
아래와 같이, 최종 수정자를 사용하여 방법을 선언하십시오.
공개 클래스 테스트 {public final void changename () {// method body}}최종 수업
최종 클래스를 상속받을 수 없으며 클래스는 최종 클래스의 기능을 상속받을 수 없습니다.
예:
공개 최종 수업 테스트 {// class body}추상 수정 자
초록 수업 :
추상 클래스는 객체를 인스턴스화하는 데 사용될 수 없습니다. 추상 수업을 선언하는 유일한 목적은 향후 수업을 확장하는 것입니다.
클래스는 동시에 추상적이고 최종적으로 수정할 수 없습니다. 클래스에 초록 방법이 포함 된 경우 클래스는 추상 클래스로 선언해야합니다. 그렇지 않으면 컴파일 오류가 발생합니다.
초록 클래스에는 추상 방법과 비 임금 방법이 포함될 수 있습니다.
예:
초록 클래스 캐러밴 {개인 이중 가격; 개인 문자열 모델; 개인 문자열 연도; 공개 초록 void gofast (); // 초록 방법 public Abstract void changecolor ();}추상 방법
추상 방법은 구현이없는 메소드이며,이 방법의 특정 구현은 서브 클래스에 의해 제공됩니다. 초록 방법은 최종적이고 엄격하다고 선언 할 수 없습니다.
초록 클래스를 상속하는 하위 클래스는 서브 클래스가 추상 클래스가 아닌 한 부모 클래스의 모든 추상 방법을 구현해야합니다.
수업에 몇 가지 추상 방법이 포함 된 경우 수업은 추상 클래스로 선언해야합니다. 초록 클래스에는 추상 방법이 포함되어 있지 않을 수 있습니다.
추상 방법의 선언은 예를 들어 다음과 같은 세미콜론으로 끝납니다.
예:
공개 초록 클래스 슈퍼 클래스 {Abstract void m (); // Abstract Method} 클래스 서브 클래스 확장 슈퍼 클래스 {// 구현 추상 메소드 void m () {.........}}동기화 된 수정 자
동기화 된 키워드에 의해 선언 된 메소드는 동시에 하나의 스레드에서만 액세스 할 수 있습니다. 동기화 된 수정자는 4 개의 액세스 수정 자에 적용될 수 있습니다.
예:
public synchronized void showdetails () {......}과도 수정 자
직렬화 된 객체에 과도 수정 인스턴스 변수가 포함되면 JVM (Java Virtual Machine)이 특정 변수를 건너 뜁니다.
이 수정자는 변수를 정의하고 클래스 및 변수의 데이터 유형을 전제하는 데 사용되는 명령문에 포함됩니다.
예:
공공 과도 int 한계 = 55; // int b를 지속하지 않습니다. // 지속됩니다
휘발성 수정 자
휘발성 수정 된 멤버 변수는 스레드가 액세스 할 때마다 공유 메모리에서 멤버 변수의 값을 다시 읽어야합니다. 또한, 멤버 변수가 변경되면 스레드는 변경 값을 공유 메모리에 다시 작성해야합니다. 이런 식으로, 언제라도 두 개의 다른 스레드는 항상 특정 멤버 변수의 동일한 값을 볼 수 있습니다. 휘발성 객체 참조는 무일하게 될 수 있습니다.
예:
공개 클래스 Myrunnable Pempess untable {개인 휘발성 부울 액티브; public void run () {active = true; while (active) // 행 1 {// code}} public void stop () {active = false; // 라인 2}}일반적으로 run () 메소드는 하나의 스레드에서 호출되고 spop () 메소드는 다른 스레드에서 호출됩니다. 버퍼에서 1 행의 활성 값이 사용되는 경우, 라인 2의 활성이 False로 설정되면 루프가 중지되지 않습니다.
위는이 기사의 모든 내용입니다. 이 기사의 내용이 모든 사람의 연구 나 업무에 도움이되기를 바랍니다. 또한 wulin.com을 더 지원하기를 바랍니다!