"Lógica de programación de Java" Capítulo 3 La base de las clases

Capítulo 3 Conceptos básicos de las clases

3.1 Conceptos básicos de clases

Una forma de entender una clase es un contenedor de funciones. Por ejemplo, en la clase Math de la API de Java, en la clase Math, se public staticmodifican los métodos a los que podemos hacer referencia .

staticRepresenta un método de clase , también llamado método estático . Lo opuesto a los métodos de clase son los métodos de instancia . Los métodos de instancia no están staticdecorados y deben llamarse a través de instancias u objetos, mientras que los métodos de clase se pueden llamar directamente a través del nombre de la clase sin crear una instancia.

publicEl método es público y se puede llamar externamente desde cualquier lugar.

privateIndica que el método es privado, este método solo puede ser llamado por otras funciones en la misma clase y no puede ser llamado por clases externas.

Es una forma básica de pensar para que los programas de computadora eviten el mal funcionamiento a través del encapsulado privado y el ocultamiento de los detalles de implementación interna.

Los siguientes son los métodos más utilizados de la clase Math .

método Características
int round (flotar a)
doble sqrt (doble a)
techo doble (doble a) Acuerdo de mejora
doble piso (doble a) Redondear a la baja
doble pow (doble a, doble b)
int abs (int a)
int max (int a, int b)
doble registro (doble a) Toma el logaritmo natural
doble aleatorio () Produce un (0, 1) (0, 1)( 0 ,1 ) Número aleatorio en el rango

El siguiente es un método común de clase Arrays relacionado con el funcionamiento de las matrices .

método Características
orden vacío (int [] a) Orden ascendente
ordenación vacía (doble [] a)
int binarySearch (long [] a, tecla larga) Encuentre la posición de la clave en la matriz a
relleno vacío (int [] a, int val) Asignar el mismo valor a todos los elementos de la matriz
int [] copyOf (int [] original, int newLength) Copia de matriz
booleano es igual a (char [] a1, char [] a2) Determine si las dos matrices son iguales

La clase es en realidad un tipo de datos personalizado. Un tipo se compone principalmente de 4 partes.

  • Los atributos del tipo en sí se reflejan mediante variables de clase (modificación estática, también conocida como variables estáticas o variables miembro estáticas).
  • Las operaciones que el propio tipo puede realizar se reflejan en los métodos de clase (modificación estática, también conocida como métodos estáticos o métodos de miembros estáticos).
  • Los atributos de una instancia de tipo se reflejan en variables de instancia (sin modificación estática, también llamadas variables miembro).
  • Las operaciones que puede realizar una instancia de tipo se reflejan en los métodos de instancia (sin modificación estática, también llamados métodos de miembro).

Podemos usar finalpara representar constantes.

En la definición de una clase, la clase no se puede usar privatepara modificar, pero puede ser sin modificadores, lo que significa una especie de visibilidad de paquete . Pero al definir clases internas, puede usar privatemodificadores.

De manera similar a las variables de clase, variables de instancia también tienen publicy privatemodificadores, y no pueden ser staticmodificados.

La diferencia entre el método de instancia y el método de clase es la siguiente.

  • Los métodos de clase solo pueden acceder a variables de clase, no a variables de instancia, y pueden llamar a otros métodos de clase, pero no pueden llamar a métodos de instancia de esta clase.
  • Los métodos de instancia pueden acceder tanto a variables de instancia como a variables de clase. Puede llamar tanto a métodos de clase como a métodos de instancia.

El proceso de uso de la clase es básicamente el siguiente.

public class ChapterThree {
    
    
    public static void main(String[] args) {
    
    
        Point p = new Point();
        p.x = 2;
        p.y = 3;
        System.out.println(p.distance());
    }
}

Entre ellos, la declaración de creación de la instancia de la clase o el objeto es Point p = new Point();. Entre ellos, new Point();es necesario. En C ++, Point ppuede crear una instancia u objeto de una clase. Pero en Java, Point psolo se crea una variable que puede hacer referencia a una instancia u objeto, es decir p, el valor es la dirección de almacenamiento real del objeto o instancia. En este momento, la new Point()memoria se asigna para la instancia del objeto y la instrucción de asignación asigna la dirección inicial de la memoria donde se almacena el objeto p, de modo que se ppueda hacer referencia a esta instancia.

Al crear una instancia de un objeto, a todas las variables de instancia se les asigna un valor predeterminado. Entre ellos, el valor predeterminado de las variables de tipo numérico es 0, booleano es falso, char es "\ u0000" y las variables de tipo de referencia son nulas. Nulo es un valor especial, lo que significa que esta variable de tipo de referencia no apunta a ningún objeto.

A diferencia de C ++, Java puede especificar el valor inicial al definir una variable miembro, independientemente de si la variable miembro es static final.

Se puede this(...)llamar al método de construcción en Java a través de .

Cada clase tiene al menos un constructor, newque se llamará durante el proceso de creación de un objeto. Si no se muestra el constructor definido, el compilador de Java generará automáticamente un constructor predeterminado . Pero después de mostrar la definición del constructor, el compilador de Java ya no genera el constructor predeterminado.

El método de construcción se puede utilizar privatepara modificar.

El ciclo de vida de clases y objetos es el siguiente.

  1. Cuando el programa crea un objeto de una clase a través de new por primera vez, o accede directamente a variables de clase y métodos de clase a través del nombre de la clase, Java carga la clase en la memoria y asigna un espacio para esta clase. Este espacio incluye definiciones de clases, variables de miembros y métodos de miembros.
  2. Después de que la clase se carga en la memoria, generalmente no se libera hasta el final del programa.
  3. Cada vez que realiza una nueva operación, se divide un área en la memoria para almacenar el objeto, y cada área corresponde a una variable de instancia independiente.
  4. La liberación de objetos se gestiona mediante el mecanismo automático de recolección de basura de Java. Cuando no hay una variable activa que haga referencia al objeto, se puede liberar el espacio correspondiente al objeto.

Los objetos, como las matrices, tienen dos piezas de memoria: la parte que guarda la dirección se asigna en la pila y la parte que guarda el contenido real se asigna en la pila.

3.2 Combinación de clases

La combinación de clases es en realidad el uso de objetos de otra clase en la clase. Por ejemplo, Stringy Dateclase.

Cada clase encapsula sus detalles internos, proporciona funciones de alto nivel al exterior y permite que otras clases consideren y resuelvan problemas en un nivel superior Esta es una forma básica de pensar en el diseño de programas.

3.3 Mecanismo de organización del código

Un paquete es similar a una carpeta y las clases y las interfaces se colocan en el paquete. El nombre del paquete se .divide, por ejemplo java.lang.String, por el nombre completo de la clase con el nombre completo del paquete . Todas las clases e interfaces de la API de Java se encuentran en el paquete Java o javax. Java es un paquete estándar y javax es un paquete extendido.

Al definir una clase, se deben usar palabras clave packagepara declarar el nombre del paquete, por ejemplo.

package shuo.laoma;
public class Hello{
    
    
    
}

La declaración de declaración del paquete debe estar en la parte superior del código fuente y no puede haber declaraciones más que comentarios en la parte frontal.

Tenga en cuenta que el nombre del paquete y el directorio de archivos deben coincidir. Si el directorio raíz donde se almacena el archivo de origen es E:\src, Helloel archivo donde se encuentra la clase anterior es Hello.javay su ruta completa debería ser E:\src\shuo\laoma\Hello.java. Si no coincide, Java generará un error de compilación.

El propósito del paquete es evitar conflictos de nombres y facilitar la organización del código.

Las referencias mutuas entre clases en el mismo paquete no requieren nombres de paquete y pueden usarse directamente. Si la clase no está en el mismo paquete, debe saber en qué paquete está. En este momento, hay dos soluciones, una es usar el nombre completo de la clase y la otra es introducir la clase usada en la clase actual. En particular, el java.langpaquete se puede utilizar directamente en la clase, la necesidad de introducir, no requiere el nombre completo, por ejemplo String, System.

importUna clase se puede introducir en el archivo de la clase actual mediante palabras clave, por ejemplo.

package shuo.laoma;
import java.util.Arrays;

public class Hello{
    
    
    
}

Al hacer importesto, puede *importar todas las clases de un paquete a la vez, por ejemplo

import java.util.*;

Pero esta introducción no puede ser recursiva.

En una clase, las referencias a otras clases deben determinarse de forma única y no puede haber clases con el mismo nombre. Si hay clases con el mismo nombre, solo puede importimportar una de ellas, y se debe acceder a otras clases con el mismo nombre a través del nombre completo.

importLa declaración debe colocarse packagedespués, antes de la definición de la clase.

Existe un tipo especial de importación llamado importación estática , que tiene una staticpalabra clave que puede importar directamente métodos estáticos públicos o miembros de la clase. Sin embargo, las importaciones estáticas no deben usarse en exceso, de lo contrario es difícil distinguir a qué tipo de código se accede.

Podemos empaquetar el código compilado en un archivo, que es conveniente para que otros programas lo llamen.

En Java, la clase Java compilada de uno o más paquetes se puede empaquetar en un archivo. El comando es jar, la extensión del archivo empaquetado .jargeneralmente se llama paquete jar .

Las bibliotecas de clases de Java y las bibliotecas de clases de terceros se proporcionan en forma de paquetes jar, que classpathse pueden usar agregándolas a la ruta de clases .

Desde el código fuente de Java hasta el programa en ejecución, se requieren dos pasos: compilación y vinculación. La compilación consiste en utilizar javaccomandos para compilar el archivo de código fuente en el código de .classbytes con la extensión . Al vincular, use javacomandos para analizar el .classarchivo, conviértalo en un código binario que pueda ser reconocido por la máquina y luego ejecútelo en la máquina virtual Java.

El parámetro especifica la necesidad de compilar una ruta de clases en tiempo de ejecución de Java . Puede haber varias rutas de clases. Para archivos de clases directos, la ruta es el directorio raíz del archivo de clases. Para los paquetes jar, la ruta es el nombre completo del paquete jar.

Cuando se compila el código fuente de Java, el compilador de Java determinará el nombre completo de cada clase referenciada, basándose en la importsuma de la declaración classpath. Cuando Java se está ejecutando, buscará y cargará la clase de acuerdo con el nombre completo de la clase determinado en el momento de la compilación.La forma de encontrarlo es encontrarlo en el classpath.

Supongo que te gusta

Origin blog.csdn.net/NelsonCheung/article/details/109913761
Recomendado
Clasificación