Latest web development tutorials

modificadores de Java

lenguaje Java proporciona muchas modificadores, divididos en las siguientes categorías:

  • modificador de acceso
  • modificador de la falta de acceso

Modificador utiliza para definir la clase, método o variable, por lo general a la vanguardia de la declaración. A través del siguiente ejemplo 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 control de acceso

Java, puede utilizar los caracteres de control de acceso para proteger el acceso a clases, variables, métodos y constructores. Java soporta cuatro derechos de acceso diferentes.

De forma predeterminada, también conocido como el predeterminado, visible dentro del mismo paquete, no utilice ningún modificador.

Privada, que se especifica modificador privado, visible dentro de la misma clase.

Hay, con el fin de especificar el modificador público, visible a todas las clases.

Protegida, modificador de protección especifica que, para todas las clases y subclases dentro del mismo paquete visible.

El modificador de acceso por defecto - no utilice las palabras clave

Utilice las variables y los métodos declarados en modificador de acceso por defecto para la clase dentro del mismo paquete es visible. Interfaz donde las variables se declaran implícitamente como public static final, y la interfaz donde el método de acceso por defecto para el público.

Ejemplo:

Declaración en el siguiente ejemplo, variables y métodos no puede utilizar cualquier modificador.

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

Acceso privado modificador -private

modificador de acceso privado es el nivel más estricto del acceso, se ha declarado como métodos privados, variables, y pertenece al constructor de la clase sólo se puede acceder, y las clases e interfaces no puede declararse privado.

Las variables declaradas como tipo de acceso privado sólo se puede acceder fuera de la clase a través de método de obtención pública de clase.

modificador de acceso privada utilizada principalmente para los detalles de implementación de la clase de protección de datos y detrás de clase.

Las siguientes clases utilizan el modificador de acceso privado:

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

Ejemplo, la variable formato de la clase Logger es una variable privada, por lo que otras clases no pueden obtener directamente y establecer el valor de la variable. Con el fin de ser capaz de operar la otra variable de clase define dos métodos comunes: getFormat () (formato de valor de retorno) y setFormat (String) (Ajuste del formato)

El acceso público modificador -public

Se declara como clases públicas, métodos, constructores, y las interfaces puede ser cualquier otro tipo de acceso.

Si varias visitas mutuas de clases públicas en diferentes paquetes, debe importar el paquete apropiado public class reside. Debido a la herencia de clase, la clase de todos los métodos públicos y variables puede ser heredado por sus subclases.

Las siguientes funciones utilizan el control de acceso público:

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

método principal del programa Java () debe establecerse en público, de lo contrario, intérprete de Java no será capaz de ejecutar la clase.

modificadores de acceso protegidas -Protegido

Está declarada como protegida variables, métodos y constructores en el mismo paquete puede ser cualquier otro tipo de acceso, y se puede acceder en diferentes subclases paquetes.

modificador de acceso protegido no puede ser modificado clases e interfaces, métodos y variables miembro puede ser declarada como protegida, pero las variables miembro y métodos miembros de las interfaces no pueden ser declarados protegidos.

Las subclases pueden acceder modificador se declara métodos y variables protegidas, por lo que podemos proteger a las clases no relacionadas utilizando estos métodos y variables.

La siguiente clase padre utiliza modificador de acceso protegido, subclases reemplazar el método openSpeaker () de la clase padre.

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

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

Si el método openSpeaker () se declara como privado, entonces, además de la clase AudioPlayer no puede acceder al método. Si openSpeaker () se declara como pública, a continuación, todas las clases son capaces de acceder al método. Si queremos que el proceso sea visible para las subclases de la clase, entonces el método se declara como protegido.

Control de acceso y herencia

Tenga en cuenta los siguientes métodos heredados reglas:

  • clase padre declarada como métodos públicos de la subclase también debe ser pública.

  • clase padre declara como método protegido en una subclase o declaradas como protegidas, ya sea declarado como público. No se puede declarar privada.

  • clase padre declarada como método privado no puede ser heredada.


modificador de la falta de acceso

Con el fin de lograr un número de otras características, Java también proporciona un número de modificadores no acceso.

modificador static se usa para crear métodos de clase y variables de clase.

modificador final, utilizado para decorar las clases, métodos y variables, clase modificada final no puede ser heredada, el método modificado de la clase no se puede heredar redefinido variables modificadas constante, no puede ser modificado.

Resumen modificador utiliza para crear clases abstractas y métodos abstractos.

Sincronizada y modificadores volátiles, principalmente para las discusiones de programación.

modificador static

  • Las variables estáticas:

    palabra clave estática se utiliza para declarar variables estáticas independientes del objeto, no importa cuántos objetos se crea una instancia de una clase, es sólo una copia de una variable estática. Las variables estáticas también se conocen como variables de clase. Las variables locales no se pueden declarar como variables estáticas.

  • Los métodos estáticos:

    palabra clave estática se utiliza para declarar un objeto es independiente del método estático. Los métodos estáticos no pueden utilizar la clase variables no estática. método estático para obtener los datos de la lista de parámetros, y luego calcular los datos.

El acceso a las variables y los métodos de la clase se puede utilizar directamente classname.variablename y classname.methodname de acceso.

En el siguiente ejemplo, modificador static se utiliza para crear métodos de clase y variables de clase.

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

Los ejemplos de los resultados de edición de operación anteriores son como sigue:

Started with 0 instances
Created 500 instances

último partido de clasificación

variables finales:

variables finales se pueden inicializar de forma explícita e inicializan sólo una vez. La referencia se declara como objetos finales no pueden apuntar a un objeto diferente. Pero el objetivo final, donde los datos se pueden cambiar. Ese objeto de referencia final no se puede cambiar, pero el valor de los cuales se puede cambiar.

modificador final se utiliza generalmente para crear una constante de clase modificador static.

Ejemplo:

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 clase finales heredados por las subclases, pero no puede modificar las subclases.

El objetivo principal del método es para evitar que la declaración final de este método se modifica.

Como se muestra a continuación, utilizando los métodos finales modificadores de declaración.

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

última categoría

clases finales no pueden ser heredados, ninguna clase puede heredar cualquiera de las características de la clase final.

Ejemplo:

public final class Test {
   // 类体
}

modificador abstract

clase abstracta:

Una clase abstracta no puede ser utilizado para crear instancias de un objeto, con el único propósito de la declaración es una clase abstracta para la futura expansión de esta clase.

Una clase no puede ser modificado abstracta y final. Si una clase contiene métodos abstractos, la clase debe ser declarado como una clase abstracta, de lo contrario, un error de compilación.

Una clase abstracta puede contener métodos abstractos y métodos no abstractos.

Ejemplo:

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

método abstracto

Ningún método es una implementación del método abstracto, la aplicación concreta del método proporcionado por las subclases. Los métodos abstractos no pueden ser declarados como final y estricta.

Cualquier subclase hereda la clase abstracta debe implementar todos los métodos abstractos de la clase padre, a menos que la subclase es también clase abstracta.

Si una clase contiene una serie de métodos abstractos, la clase debe ser declarado como una clase abstracta. Una clase abstracta no puede contener métodos abstractos.

declaración de método abstracto termina con un punto y coma, por ejemplo: la muestra abstracta pública ();

Ejemplo:

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

modificador sincronizado

Método sincronizado palabra clave para declarar al mismo tiempo un solo acceso hilo. modificador sincronizada se puede aplicar a los cuatro modificadores de acceso.

Ejemplo:

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

modificador transient

objeto serializado contiene modificada por las variables de instancia transitoria, la máquina virtual de Java (JVM) para saltar esa variable en particular.

El modificador se incluye en la definición de las variables de procesamiento previo comunicado clases de tipos de datos y variables.

Ejemplo:

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

Los modificadores volátiles

variable miembro modificado volátil cada vez que se accede hilos se ven obligados a volver a leer el valor de la variable miembro de la memoria compartida. Además, cuando los cambios de variables miembro, un hilo se ve obligado a cambiar el valor escrito de nuevo a la memoria compartida. De manera que en cualquier momento, dos hilos diferentes ven siempre el mismo valor de una variable miembro.

Una referencia a un objeto volátil puede ser nulo.

Ejemplo:

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

En circunstancias normales, un hilo llama al método run () (en el hilo abierto Ejecutable) en otro hilo llamadas de método de parada (). Si se utiliza el valor activo en la primera fila de la memoria intermedia, en la segunda fila cuando el ciclo activo es falso no se detiene.

Sin embargo, el código anterior, se utiliza una volátil modificada activa, por lo que el ciclo se detendrá.