-
클래스, 객체 또는 필드의 접근성을 설명하는 액세스 한정자가 필요합니다. 이것이 없으면 JVM(이것은 범용 마법의 소스임)이 자동으로 패키지에 기본 식별자를 할당합니다.
두 번째 수정자부터 시작하는 비액세스 수정자는 필수가 아니며 서로 충돌할 수도 있습니다(그러나 먼저 중요한 것이 먼저입니다).
-
Static 수정자는 클래스, 개체 또는 필드가 정적임을 나타냅니다. 그러나 그것은 무엇을 의미합니까? 기본적으로는 현장에서 시도해 보겠습니다.
정적 변수는 클래스 변수라고 하며 해당 클래스의 모든 인스턴스에 고유합니다. 정적 메서드는 선언된 개체를 만들지 않고도 호출할 수 있습니다. 정적 클래스는 한 클래스를 다른 클래스에 중첩할 때 사용되며 내부 클래스와 외부 클래스 사이의 상호 작용 원리는 메서드와 유사합니다(이는 별도의 논의 주제입니다). 객체 내에서 별도의 블록으로 사용할 수도 있습니다.
-
최종 수정자는 변수가 상수임을 효과적으로 나타냅니다. 메소드의 경우 - 상속 중에 재정의할 수 없지만 클래스의 경우 이는 메소드에서 상속될 수 없음을 나타냅니다(불변).
static 및 final 수정자는 클래스, 개체 및 필드에 적용됩니다. 그러나 그 중 일부에만 적용되는 수정자가 있습니다(또는 변수와 메서드가 모두 필드이지만 모든 수정자가 둘 다에 적용되는 것은 아니기 때문에 일부에도 적용됨). 비유를 하자면 부츠와 장갑에만 속도 마법을 부여할 수 있지만(더 빠르게 움직이게 하기 위해) 모자에 속도 마법을 부여하는 것은 의미가 없습니다(그리고 Universal Supervisory Council(컴파일러)에서는 이를 허용하지 않습니다).
-
Abstract 수정자는 메서드와 클래스에만 적용됩니다 . 추상 메서드는 구현(본문)이 없는 메서드입니다.
클래스가 추상으로 표시되면 추상 메서드가 포함되거나 해당 클래스의 인스턴스 생성을 방지하기 위해 수행됩니다. 비유를 그리면 지침 중간에 "객체 색칠하기"라는 제목이 표시되며 그 뒤에는 설명이 없습니다. 저것들. 이 지침을 사용하면 개체를 만들고 색칠할 수도 있지만, 이 특정 지침은 방법을 알려주지 않습니다(이 개체를 기반으로 빨간색 개체를 만드는 방법을 직접 작성하고 색칠하는 방법을 설명).
-
동기화 수정자는 메소드에만 사용됩니다. 해당 존재는 한 번에 하나의 스레드만 실행할 수 있음을 나타냅니다. 객체 내에서 별도의 코드 블록으로 사용될 수도 있습니다(동기화 객체 지정).
-
휘발성 수정자 - 변수에만 해당됩니다 . 여러 스레드에서 동시에 사용할 수 있는 변수에 사용하는 것이 좋습니다. 이러한 수정자가 있는 변수는 변경될 때마다 프로세서 캐시에서 메인 메모리로 즉시 복사되므로 병렬 스레드가 가장 최근 값을 받을 수 있습니다.
하나의 스레드만 변수에 쓸 수 있고 나머지 스레드는 읽기만 가능한 경우 휘발성이 적용 가능하다는 점은 주목할 가치가 있습니다. 다른 경우에는 휘발성 변수에 쓰는 메서드에 동기화 수정자를 추가하는 것이 좋습니다.
-
과도 수정자 – 변수에만 해당됩니다 . 이 수정자는 객체를 직렬화할 때 건너뛰어야 하는 변수를 표시합니다. (이것은 원칙적으로 스스로 읽을 수 있는 스마트한 프로세스입니다...)*
* - 제가 이 글을 레벨 17에 썼는데 그때까지는 연재 과정에 대한 설명이 없었기 때문에 복사 붙여넣기보다는 필요하다면 직접 공부해 보시길 권합니다.
- 최종 및 휘발성 - 변수의 경우 최종(상수)이라고 동시에 말할 수 없으며 여러 스레드가 이를 변경할 수 있습니다... 결국 변수는 상수이며 언제든지 스레드가 이를 읽을 수 있습니다. , 그러나 단일 스레드는 상수를 변경할 수 없습니다(Universal Supervisory Council은 이를 허용하지 않습니다).
- 최종 및 추상 - 클래스와 메서드는 추상(대부분의 경우 구현을 위해 명확하게 해야 함)이면서 최종일 수 없습니다. 불변. 지침에는 모든 재료(추상 부분)로 내구성이 뛰어난 헬멧을 만드는 방법이 나와 있지만 이를 위해서는 구멍이 없어야 합니다(마지막 필수 부분은 변경할 수 없음).
- 추상 및 정적 - 추상 메서드는 동시에 정적이거나 동기화될 수 없습니다. 정적 추상 메소드는 아무 것도 하지 않을 뿐만 아니라 전체 클래스에 속하기 때문에 의미가 없습니다. 결과는 쓸모가 없습니다.
- 추상화 및 동기화 - 아무것도 하지 않는 방법으로 작업을 동기화하는 것이 무슨 의미가 있습니까?
GO TO FULL VERSION