Latest web development tutorials

modificadores Java

linguagem Java fornece muitos modificadores, divididos nas seguintes categorias:

  • modificador de acesso
  • modificador não-acesso

Modificador usado para definir a classe, método ou variável, geralmente na vanguarda da declaração. Através do seguinte exemplo para ilustrar:

public class className {
   // ...
}
private boolean myFlag;
static final double weeks = 9.5;
protected static final int BOXWIDTH = 42;
public static void main(String[] arguments) {
   // 方法体
}

modificador de controle de acesso

Java, você pode usar caracteres de controle de acesso para proteger o acesso a classes, variáveis, métodos e construtores. Java suporta quatro diferentes direitos de acesso.

Por padrão, também conhecido como o padrão, visível dentro do mesmo pacote, não utilize qualquer modificador.

Privado, para modificador particular é especificado, visível dentro da mesma classe.

Existem, a fim de especificar o modificador pública, visíveis para todas as classes.

Protegido, modificador protegido especifica que, para todas as classes e subclasses dentro do mesmo pacote visível.

O modificador de acesso padrão - não use as palavras-chave

Use variáveis ​​e métodos declarados no modificador de acesso padrão para a classe no mesmo pacote é visível. Interface onde as variáveis ​​são declaradas implicitamente como public static final, ea interface onde o método de acesso padrão para o público.

exemplo:

Declaração nos seguintes exemplo, variáveis ​​e métodos não podem usar qualquer modificador.

String version = "1.5.1";
boolean processOrder() {
   return true;
}

Acesso privado -Privada modificador

modificador de acesso privado é o nível mais rigoroso de acesso, é declarada como métodos particulares, variáveis, e pertence ao construtor da classe só pode ser acessado, e as classes e interfaces não pode ser declarado privado.

Variáveis ​​declaradas como tipo de acesso privado só pode ser acessado fora da classe através da classe método getter público.

modificador de acesso privado utilizado principalmente para os detalhes de implementação classe de protecção e dados por trás de classe.

As seguintes classes usar o modificador de acesso private:

public class Logger {
   private String format;
   public String getFormat() {
      return this.format;
   }
   public void setFormat(String format) {
      this.format = format;
   }
}

Exemplo, a variável formato de classe Logger é uma variável privada, para que outras classes não podem obter diretamente e definir o valor da variável. A fim de ser capaz de operar a outra variável de classe define dois métodos comuns: GetFormat () (formato de valor de retorno) e SetFormat (String) (Definição do formato)

O acesso do público -public modificador

Ele é declarado como classes públicas, métodos, construtores, e as relações podem ser qualquer outro tipo de acesso.

Se várias visitas mútuas de classes públicas em diferentes pacotes, você precisa importar o pacote apropriado classe pública reside. Porque a classe de herança, a classe de todos os métodos públicos e variáveis ​​pode ser herdado por suas subclasses.

As seguintes funções usar o controle de acesso público:

public static void main(String[] arguments) {
   // ...
}

principal método programa Java () deve ser definido como público, caso contrário, intérprete Java não será capaz de executar a classe.

modificadores de acesso protegidas-protegida

É declarado como protegido variáveis, métodos e construtores no mesmo pacote pode ser qualquer outro tipo de acesso, e pode ser acessado em diferentes subclasses pacotes.

modificador de acesso protegidos não podem ser modificados classes e interfaces, métodos e variáveis ​​de membro pode ser declarado como protegido, mas as variáveis ​​e métodos de membros que integram interfaces não pode ser declarada protegida.

Subclasses pode acessar modificador é declarado métodos e variáveis ​​protegidas, para que possamos proteger as classes não relacionadas utilizando esses métodos e variáveis.

A seguinte classe pai usa modificador de acesso protegido, subclasses substituir o método openSpeaker () da classe pai.

class AudioPlayer {
   protected boolean openSpeaker(Speaker sp) {
      // 实现细节
   }
}

class StreamingAudioPlayer {
   boolean openSpeaker(Speaker sp) {
      // 实现细节
   }
}

Se o método openSpeaker () é declarado como privado, então, além de classe AudioPlayer não pode acessar o método. Se openSpeaker () é declarado como público, em seguida, todas as classes são capazes de acessar o método. Se queremos tornar o processo visível para as subclasses da classe, então o método é declarado como protegido.

controle de acesso e herança

Por favor, note os seguintes métodos herdados regras:

  • classe pai declarado como métodos públicos na subclasse também deve ser público.

  • classe pai declarado como método protegido em uma subclasse ou declaradas como protegidas, seja declarado como público. Você não pode ser declarado privado.

  • classe pai declarado como método particular não pode ser herdada.


modificador não-acesso

A fim de alcançar um número de outras características, Java também fornece um número de modificadores não acesso.

modificador estático é usado para criar métodos de classe e variáveis ​​de classe.

modificador final, usados ​​para decorar as classes, métodos e variáveis, classe final modificado não pode ser herdada, o método modificado da classe não pode ser herdada redefinido, as variáveis ​​modificadas constante, não pode ser modificado.

Abstract modificador usado para criar classes abstratas e métodos abstratos.

Sincronizada e modificadores voláteis, principalmente para segmentos de programação.

modificador static

  • Variáveis estáticas:

    palavra-chave estática é usada para declarar variáveis ​​estáticas independentes do objeto, não importa quantos objetos de uma classe é instanciado, ele é apenas uma cópia de uma variável estática. Variáveis ​​estáticas também conhecido como variáveis ​​de classe. As variáveis ​​locais não podem ser declarados como variáveis ​​estáticas.

  • Os métodos estáticos:

    palavra-chave static é usado para declarar um objeto é independente do método estático. Os métodos estáticos não pode usar a classe variáveis ​​não-estático. método estático para obter os dados da lista de parâmetros, e depois calcular os dados.

Acesso a variáveis ​​e métodos de classe podem ser usados ​​diretamente classname.variablename e classname.methodname do acesso.

No exemplo a seguir, modificador estático é usado para criar métodos de classe e variáveis ​​de classe.

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");
   }
}

Exemplos dos resultados da operação de edição acima são como se segue:

Started with 0 instances
Created 500 instances

qualificador final

variáveis finais:

variáveis ​​finais podem ser explicitamente inicializado e inicializada apenas uma vez. A referência é declarado como objetos finais não pode apontar para um objeto diferente. Mas o alvo final, onde os dados podem ser alterados. Esse objecto de referência final não pode ser alterado, mas cujo valor pode ser alterado.

modificador final é geralmente usado em conjunto para criar uma constante classe modificador estático.

exemplo:

public class Test{
  final int value = 10;
  // 下面是声明常量的实例
  public static final int BOXWIDTH = 6;
  static final String TITLE = "Manager";

  public void changeValue(){
     value = 12; //将输出一个错误
  }
}

método final

métodos de classe finais herdadas por subclasses, mas não pode modificar as subclasses.

O principal objectivo do método é o de evitar que a declaração final deste método é modificado.

Como mostrado abaixo, usando os métodos de modificação de declaração finais.

public class Test{
    public final void changeName(){
       // 方法体
    }
}

categoria final

aulas finais não ser herdada pode, nenhuma classe pode herdar qualquer uma das características da classe final.

exemplo:

public final class Test {
   // 类体
}

modificador abstract

classe abstrata:

Uma classe abstrata não pode ser usado para instanciar um objeto, o único propósito da declaração é uma classe abstrata para a futura expansão desta classe.

A classe não pode ser modificado abstrato e final. Se uma classe contém métodos abstratos, a classe deve ser declarada como uma classe abstrata, caso contrário, um erro do compilador.

Uma classe abstrata pode conter métodos abstratos e métodos não-abstrato.

exemplo:

abstract class Caravan{
   private double price;
   private String model;
   private String year;
   public abstract void goFast(); //抽象方法
   public abstract void changeColor();
}

método abstrato

Nenhum método é uma implementação método abstrato, a implementação específica do método fornecido por subclasses. métodos abstratos não pode ser declarado como final e rigorosa.

Qualquer subclasse herda a classe abstrata deve implementar todos os métodos abstratos da classe pai, a menos que a subclasse também é classe abstrata.

Se uma classe contém uma série de métodos abstratos, a classe deve ser declarada como uma classe abstrata. Uma classe abstrata não pode conter métodos abstratos.

Abstract declaração de método termina com um ponto e vírgula, por exemplo: amostra abstrato pública ();

exemplo:

public abstract class SuperClass{
    abstract void m(); //抽象方法
}
 
class SubClass extends SuperClass{
     //实现抽象方法
      void m(){
          .........
      }
}

modificador sincronizado

Método sincronizado palavra-chave para declarar ao mesmo tempo, apenas um acesso de discussão. modificador sincronizado pode ser aplicado aos quatro modificadores de acesso.

exemplo:

public synchronized void showDetails(){
.......
} 

modificador transiente

objeto serializado contém modificado por variáveis ​​de instância transitórios, máquina virtual Java (JVM) para ignorar essa variável particular.

O modificador está incluído na definição de declaração variáveis ​​para pré-processamento de classes de tipo de dados e variáveis.

exemplo:

public transient int limit = 55;   // will not persist
public int b; // will persist

Os modificadores voláteis

Volátil variável de membro modificado cada vez que é acessado tópicos são forçados a voltar a ler o valor da variável de membro de memória compartilhada. Além disso, quando as alterações variável de membro, um thread é forçado a alterar o valor escrito de volta para a memória compartilhada. De modo que, em qualquer momento, dois segmentos diferentes ver sempre o mesmo valor de uma variável de membro.

A referência de objeto volátil pode ser nulo.

exemplo:

public class MyRunnable implements Runnable
{
    private volatile boolean active;
    public void run()
    {
        active = true;
        while (active) // 第一行
        {
            // 代码
        }
    }
    public void stop()
    {
        active = false; // 第二行
    }
}

Em circunstâncias normais, um thread chama o método run () (em fio abertas Runnable) em outro segmento chamadas parar () método. Se o valor activo na primeira linha do tampão é utilizado, em segunda linha, quando o ciclo activo for falsa não pára.

No entanto, o código acima, usamos uma versão modificada volátil ativa, de modo que o ciclo será interrompido.