la consolidación de los conocimientos de Java modificadores

modificadores de Java


lenguaje Java proporciona una serie de modificadores, divididos en las siguientes categorías:

  • modificador de acceso
  • modificador de no acceso

Modificadores utilizan para definir clases, métodos, o variables, por lo general en el estado de extremo más distal.

Ejemplo:

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

En primer lugar, el modificador de control de acceso

Java puede ser utilizado para controlar el acceso a un acceso seguro a las clases de caracteres, variables, métodos y constructores. Java soporta cuatro derechos de acceso diferentes.

  • por defecto (que es el valor por defecto, nada que escribir): Visible en el mismo paquete, no utilice ningún modificador. El uso de objetos: clases, interfaces, variables, métodos.
  • Privado : Visible dentro de la misma clase. Usar objetos: variables y métodos. Nota: No se puede modificar la clase (clase fuera)
  • pública : visible para todas las clases. El uso de objetos: clases, interfaces, variables, métodos
  • protegida : visible para todas las clases y subclases en el mismo paquete. Usar objetos: variables y métodos. Nota: No se puede modificar la clase (fuera de clase) .
modificadores La clase actual Lo mismo intracapsular clase descendiente (mismo paquete) clase descendiente (en diferentes paquetes) otros paquetes
public Y Y Y Y Y
protected Y Y Y Y/N norte
default Y Y Y norte norte
private Y norte norte norte norte

En segundo lugar, el modificador de acceso por defecto - no utilice palabras clave

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

Ejemplos que se muestran en la siguiente exposición, variables y métodos se pueden utilizar sin ningún modificador.

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

En tercer lugar, el acceso privado modificador -private

Acceso privado modificador se utiliza principalmente para la protección de datos y los detalles de implementación de la clase tras clase.

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

En cuarto lugar, el modificador de acceso público -public

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

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

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

Quinto, modificadores de acceso no

modificador static para la modificación de las variables de clase y métodos de la clase.

modificador final para la modificación de las clases, variables y métodos, una clase final modificado no puede ser heredado, un método modificado de la clase no puede ser heredada redefinido, la constante de las variables modificado, no puede ser modificado.

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

sincronizada y modificador volátil, principalmente para la programación de hilo.

1, modificador static

  • Las variables estáticas:

    La 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 conocidos como variables de clase. Las variables locales no pueden ser declarados como variables estáticas.

  • Los métodos estáticos:

    palabra clave estática se utiliza para separar el objeto de una declaración de 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, los datos se calcula entonces.

El acceso a las variables y métodos de la clase puede ser utilizado como el nombre de la clase. Los nombres de variables y nombres de clase. Nombre del método de acceso de modo.

Ejemplo:

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");
   }
}
---结果:
Starting with 0 instances
Created 500 instances

2, último partido de clasificación

última variable:

última representa la "última, final" después de significado, una vez que la asignación de variables, no pueden ser reasignados. Las variables de instancia finales modificados deben especificarse de manera explícita valor inicial.

El modificador y estático modificador final se utiliza generalmente juntos para crear una constantes de clase.

public class Test{
  final int value = 10;
  // 下面是声明常量的实例
  public static final int BOXWIDTH = 6;
  static final String TITLE = "Manager";
 
  public void changeValue(){
     value = 12; //将输出一个错误
  }
}

Métodos finales:

último método de la clase padre puede ser heredada por las subclases, pero no puede ser anulado por las subclases.

El propósito principal del método es evitar que la declaración final de este método es modificado.

Como se muestra a continuación, utilizando los métodos declarados modificador final.

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

categorías finales:

clase final no puede ser heredado, ninguna clase puede heredar las propiedades de clase final.

public final class Test {
   // 类体
}

3, modificador abstract

clase abstracta:

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

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 se producirá el error de compilación.

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

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

Los métodos abstractos:

método abstract no es un método de aplicación, la aplicación concreta del método proporcionado por las subclases.

Los métodos abstractos no pueden ser declarados como final o estática.

Cualquier subclase hereda todos los métodos abstractos de la clase abstracta de la clase padre debe implementar, 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.

declaraciones de métodos abstractos terminan con un punto y coma, por ejemplo: Muestra abstracta pública (); .

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

4, modificador sincronizado

El método de la palabra clave sincronizada para declarar al mismo tiempo sólo puede ser un acceso del hilo. modificador sincronizado se puede aplicar a cuatro modificadores de acceso.

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

5, transitoria modificador

Cuando objeto serializado contiene variables de instancia es la modificación transitoria, la máquina virtual Java (JVM) para saltar esa variable particular.

El modificador se incluye en el estado define variables, y clases para pre-procesar el tipo de datos de la variable.

public transient int limit = 55;   // 不会持久化
public int b; // 持久化

6, modificador volátil

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

Una referencia de objeto volátil puede ser nulo.

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 los hilos abiertos Ejecutable), en otra parada llamadas de rosca () método. Si la primera línea de se usa el valor activo en el tampón, entonces la segunda fila ciclo no se detiene cuando el activo es falso.

Pero el código anterior usamos modificación activo volátil, por lo que el ciclo se detendrá.

发布了10 篇原创文章 · 获赞 9 · 访问量 1322

Supongo que te gusta

Origin blog.csdn.net/qq_43658155/article/details/104806815
Recomendado
Clasificación