Java 수정자 자세히 보기

7962 단어 Java수식자
Java 언어는 다음과 같은 두 가지 유형으로 나눌 수 있는 많은 수정자를 제공합니다.
  • 수식자 방문
  • 비접근 수식자
  • 수식자는 클래스, 방법 또는 변수를 정의하는데 일반적으로 문장의 맨 앞에 놓는다.우리는 아래의 예를 통해 설명한다.
    
    public class className {
      // ...
    }
    private boolean myFlag;
    static final double weeks = 9.5;
    protected static final int BOXWIDTH = 42;
    public static void main(String[] arguments) {
      //  
    }
    액세스 제어 수식자
    Java에서는 클래스, 변수, 방법 및 구성 방법에 대한 액세스를 보호하기 위해 액세스 제어 문자를 사용할 수 있습니다.Java는 네 가지 다른 액세스 권한을 지원합니다.
    기본적으로, default라고도 하는데, 같은 가방에서 볼 수 있으며, 어떤 수식자도 사용하지 않습니다.
    프라이빗 수식자로 지정되어 같은 종류에서 볼 수 있습니다.
    공유,public 수식자로 지정되어 모든 종류를 볼 수 있습니다.
    보호된,protected 수식자로 지정되어 같은 가방 안의 클래스와 모든 하위 클래스를 볼 수 있습니다.
    기본 액세스 수정자 - 키워드를 사용하지 않음
    기본 접근 수식자 설명의 변수와 방법을 사용하면 같은 가방 안의 클래스를 볼 수 있습니다.인터페이스의 변수는 모두publicstaticfinal로 은밀하게 표시되고, 인터페이스의 방법은 기본적으로 접근 권한이public입니다.
    인스턴스:
    아래의 예에서 보듯이 변수와 방법의 성명은 어떤 수식자도 사용하지 않을 수 있다.
    
    String version = "1.5.1";
    boolean processOrder() {
      return true;
    }
    개인 액세스 수식자-private
    개인 접근 수식자는 가장 엄격한 접근 단계이기 때문에private로 성명된 방법, 변수와 구조 방법은 소속 클래스에만 접근할 수 있고 클래스와 인터페이스는private로 성명할 수 없습니다.
    개인 접근 형식으로 설명된 변수는 클래스의 공통된 getter 방법을 통해서만 외부 클래스에 접근할 수 있습니다.
    Private 액세스 수식자의 사용은 주로 클래스의 세부 사항과 클래스의 데이터를 숨기는 데 사용됩니다.
    다음 클래스는 개인 액세스 수식자를 사용합니다.
    
    public class Logger {
      private String format;
      public String getFormat() {
       return this.format;
      }
      public void setFormat(String format) {
       this.format = format;
      }
    }
    실례에서 Logger 클래스의format 변수는 개인 변수이기 때문에 다른 클래스는 이 변수의 값을 직접 얻고 설정할 수 없습니다.다른 클래스가 이 변수를 조작할 수 있도록 두 가지 퍼블릭 방법을 정의했습니다. getFormat () (format 값을 되돌려줍니다) 과 setFormat (String) (format 값을 설정합니다)
    공유 액세스 수식자-public
    퍼블릭으로 선언된 클래스, 방법, 구조 방법, 인터페이스는 다른 클래스에 접근할 수 있습니다.
    만약 서로 접근하는public류가 서로 다른 가방에 분포되어 있다면, 상응하는public류가 있는 가방을 가져와야 한다.클래스의 계승성 때문에 클래스의 모든 공유 방법과 변수는 그 하위 클래스에 계승될 수 있다.
    다음 함수는 공유 액세스 제어를 사용합니다.
    
    public static void main(String[] arguments) {
      // ...
    }
    Java 프로그램의main () 방법은 공유로 설정해야 합니다. 그렇지 않으면 Java 해석기가 이 클래스를 실행할 수 없습니다.
    보호된 액세스 수식자-protected
    보호된 변수, 방법, 구조기는 같은 패키지의 다른 클래스에 접근할 수도 있고, 다른 패키지의 하위 클래스에 접근할 수도 있습니다.
    Protected 액세스 수식자는 클래스와 인터페이스를 수식할 수 없습니다. 방법과 구성원 변수는protected로 설명할 수 있지만 인터페이스의 구성원 변수와 구성원 방법은protected로 설명할 수 없습니다.
    하위 클래스는 Protected 수식자 성명의 방법과 변수에 접근할 수 있으며, 이렇게 하면 상관없는 클래스가 이런 방법과 변수를 사용하는 것을 보호할 수 있다.
    다음 상위 클래스는protected 액세스 수식자를 사용합니다. 하위 클래스는 상위 클래스의openSpeaker () 방법을 다시 불러옵니다.
    
    class AudioPlayer {
      protected boolean openSpeaker(Speaker sp) {
       //  
      }
    }
    class StreamingAudioPlayer {
      boolean openSpeaker(Speaker sp) {
       //  
      }
    }
    
    openSpeaker () 메서드를 private로 선언하면 AudioPlayer를 제외한 클래스는 이 메서드에 접근할 수 없습니다.openSpeaker () 를 public 로 선언하면 모든 클래스가 이 방법에 접근할 수 있습니다.만약 우리가 이 방법이 그 클래스의 하위 클래스만 볼 수 있도록 하려면, 이 방법을protected라고 성명합니다.
    액세스 제어 및 상속
    다음 방법으로 상속되는 규칙에 유의하십시오.
  • 부류에서public라고 성명하는 방법은 부류에서도public이어야 한다..
  • 부류에서protected로 성명하는 방법은 부류에서protected로 성명하거나public로 성명한다.private로 선언할 수 없습니다..
  • 부류에서private라고 성명된 방법은 계승될 수 없습니다..
  • 비접근 수식자
    일부 다른 기능을 실현하기 위해 자바도 많은 비접근 수식자를 제공했다.
    클래스 방법과 클래스 변수를 만드는 데 사용되는 static 수식자입니다.
    Final 수식부호는 수식류, 방법과 변수에 사용되고final 수식류는 계승될 수 없으며 수식방법은 계승류에 의해 재정의될 수 없으며 수식변수는 상량으로 수정할 수 없습니다.
    추상적인 클래스와 추상적인 방법을 만드는 데 사용되는 Abstract 수식자.
    Synchronized와volatile 수식자는 주로 루틴 프로그래밍에 사용됩니다.
    Static 수식자
  • 정적 변수:
  • Static 키워드는 대상에 독립된 정적 변수를 설명하는 데 사용됩니다. 하나의 클래스가 얼마나 많은 대상을 실례화하든지 간에 정적 변수는 복사본만 있습니다.정적 변수도 클래스 변수가 된다.국부 변수는static 변수로 설명될 수 있습니다.
  • 정적 방법:
  • Static 키워드는 객체에 독립적인 정적 방법을 설명하는 데 사용됩니다.정적 방법은 클래스의 비정적 변수를 사용할 수 없습니다.정적 방법은 매개 변수 목록에서 데이터를 얻은 후에 이 데이터를 계산한다.
    클래스 변수와 방법에 대한 접근은classname를 직접 사용할 수 있습니다.variablename과classname.methodname 방식으로 접근합니다.
    다음 예에서 보듯이static 수식자는 클래스 방법과 클래스 변수를 만드는 데 사용됩니다.
    
    public class InstanceCounter {
      private static int numInstances = 0;
      protected static int getCount() {
       return numInstances;
      }
      private static void addInstance() {
       numInstances++;
      }
      InstanceCounter() {
       InstanceCounter.addInstance();
      }
      public static void main(String[] arguments) {
       System.out.println("Starting with " +
       InstanceCounter.getCount() + " instances");
       for (int i = 0; i < 500; ++i){
         new InstanceCounter();
         }
       System.out.println("Created " +
       InstanceCounter.getCount() + " instances");
      }
    }
    
    위의 인스턴스 실행 편집 결과는 다음과 같습니다.
    Started with 0 instances
    Created 500 instances
    파이널 수식자
    Final 변수:
    Final 변수는 현저하게 초기화되고 한 번만 초기화됩니다.final로 선언된 대상의 인용은 다른 대상을 가리킬 수 없습니다.하지만final 대상의 데이터는 바뀔 수 있다.즉, final 대상의 인용은 바꿀 수 없지만 안의 값은 바꿀 수 있다.
    Final 수식자는 일반적으로static 수식자와 함께 사용하여 클래스 상수를 만듭니다.
    인스턴스:
    
    public class Test{
     final int value = 10;
     //  
     public static final int BOXWIDTH = 6;
     static final String TITLE = "Manager";
     public void changeValue(){
       value = 12; // 
     }
    }
    
    최종 방법
    클래스 중의 Final 방법은 이불류를 계승할 수 있지만 이불류를 수정할 수 없습니다.
    final 방법을 설명하는 주요 목적은 이 방법의 내용이 수정되는 것을 방지하는 것이다.
    아래와 같이final 수식자 성명 방법을 사용합니다.
    
    public class Test{
      public final void changeName(){
        //  
      }
    }
    파이널 클래스
    Final 클래스는final 클래스의 어떤 특성도 계승할 수 없습니다.
    인스턴스:
    
    public final class Test {
      //  
    }
    Abstract 수식자
    추상 클래스:
    추상류는 실례화 대상에 사용할 수 없으며, 추상류의 유일한 목적은 장래에 이 종류를 확장하기 위한 것이다.
    한 종류가 abstract와final에 동시에 수식될 수 없습니다.만약 하나의 클래스가 추상적인 방법을 포함한다면, 이 클래스는 반드시 추상적인 클래스로 성명해야 한다. 그렇지 않으면 컴파일 오류가 발생할 것이다.
    추상류는 추상적인 방법과 비추상적인 방법을 포함할 수 있다.
    인스턴스:
    
    abstract class Caravan{
      private double price;
      private String model;
      private String year;
      public abstract void goFast(); // 
      public abstract void changeColor();
    }
    추상적 방법
    추상적인 방법은 어떠한 실현도 없는 방법으로 이 방법의 구체적인 실현은 자류가 제공한다.추상적인 방법은final과strict로 설명될 수 없습니다.
    추상류를 계승하는 모든 자류는 반드시 부류의 모든 추상적인 방법을 실현해야 한다. 이 자류도 추상류가 아니라면.
    만약 한 종류가 몇 가지 추상적인 방법을 포함한다면, 이 종류는 반드시 추상적인 종류로 성명해야 한다.추상류는 추상적인 방법을 포함하지 않을 수 있다.
    추상적인 방법의 성명은 분호로 끝난다. 예를 들어public abstractsample().
    인스턴스:
    
    public abstract class SuperClass{
      abstract void m(); // 
    } 
    class SubClass extends SuperClass{
       // 
       void m(){
         .........
       }
    }
    Synchronized 수정자
    Synchronized 키워드 선언 방법은 같은 시간에 한 라인만 접근할 수 있습니다.Synchronized 수식자는 네 개의 액세스 수식자에 적용할 수 있습니다.
    인스턴스:
    
    public synchronized void showDetails(){
    .......
    }
    Transient 수식자
    서열화된 대상에transient로 장식된 실례 변수가 포함되어 있을 때 자바 가상 머신(JVM)은 이 특정한 변수를 건너뛴다.
    이 수식자는 변수를 정의하는 문장에 포함되어 있으며, 클래스와 변수를 미리 처리하는 데이터 형식에 사용됩니다.
    인스턴스:
    
    public transient int limit = 55;  // will not persist
    public int b; // will persist
    volatile 수식자
    Volatile 손질된 구성원 변수는 스레드에 접근할 때마다 공유 메모리에서 구성원 변수의 값을 다시 읽도록 강요합니다.그리고 구성원 변수가 변할 때 변경 값을 공유 메모리에 다시 쓰도록 강요합니다.이렇게 하면 언제든지 두 개의 다른 라인은 항상 어떤 구성원 변수의 같은 값을 볼 수 있다.volatile 대상 인용은null일 수 있습니다.
    인스턴스:
    
    public class MyRunnable implements Runnable
    {
      private volatile boolean active;
      public void run()
      {
        active = true;
        while (active) // line 1
        {
          //  
        }
      }
      public void stop()
      {
        active = false; // line 2
      }
    }
    일반적으로 한 라인에서run () 방법을 사용하고 다른 라인에서stop () 방법을 사용합니다.만약 라인 1의 active가 버퍼에 있는 값이 사용된다면, 라인 2의 active를false로 설정할 때 순환이 멈추지 않습니다.
    이상은 본문의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 일정한 도움을 줄 수 있는 동시에 저희를 많이 지지해 주시기 바랍니다!

    좋은 웹페이지 즐겨찾기