Arquitectura de programación (06): Java orientado a objetos

Código fuente de este artículo: GitHub · haga clic aquí || GitEE · haga clic aquí

1. Conceptos básicos

1. Concepto orientado a objetos

La idea principal de la programación orientada a objetos es descomponer cada transacción que constituye un problema en varios objetos. El propósito de establecer objetos no es completar un paso, sino describir el comportamiento de una cosa en todo el paso de resolución de problemas.

Arquitectura de programación (06): Java orientado a objetos

2. Clases y objetos

Objeto: lo único que realmente existe; en la aplicación, el objeto es una combinación de datos y acción, que no solo puede realizar operaciones, sino también registrar los resultados de las operaciones.

Clase: Un concepto abstracto, que en realidad es la extracción de atributos y comportamientos comunes de ciertos tipos de cosas; por ejemplo, la clase Usuario [nombre.age.gender] se usa para describir la información básica de los usuarios.

Cómo entender la orientación a objetos en el desarrollo de Java: construya un sistema API de interfaz de objetos adecuado, cree objetos adecuados y resuelva problemas adecuados. Por ejemplo, la API JDK tiene clases definidas y los objetos creados por estas clases se utilizan directamente; se crean mediante clases personalizadas El uso de objetos, en el modo MVC, diferentes funciones comerciales crean diferentes interfaces y sistemas de clases.

3. Propiedades y métodos

Variable de clase

Diferencia de ubicación:

  • Las variables miembro se definen fuera del método, dentro de la clase;
  • Las variables locales se definen en el método.

Diferencia de función:

  • El papel de las variables miembro es describir las propiedades públicas de una clase de cosas.
  • El papel de las variables locales es proporcionar una variable para uso interno en el método.

Diferencia de valor inicial:

  • Las variables miembro tienen valores iniciales predeterminados.
  • Las variables locales no tienen un valor inicial predeterminado y deben inicializarse antes de poder usarse.

Ciclo vital:

  • Existe cuando se crea el objeto y desaparece cuando el objeto desaparece.
  • Las variables locales existen cuando se ejecuta la sentencia que crea la variable cuando se llama al método correspondiente, una vez que la variable local sale de su propio ámbito, inmediatamente desaparece de la memoria.

Método en clase

Una descripción específica de una función de clase, que puede ser un método de clase o un método de objeto;

  • Los métodos de clase, también llamados métodos estáticos, son llamados directamente por clases, clases de herramientas de uso común;
  • Los métodos de objeto, también llamados métodos de instancia, se llaman usando objetos de clase, métodos API comunes;

Método de construcción

La función del constructor es inicializar el objeto correspondiente. Si no hay un tipo de valor de retorno, el nombre de la función del constructor debe ser consistente con el nombre de la clase. Si una clase no declara explícitamente un constructor, entonces el compilador java Agrega un constructor sin parámetros a la clase. Si una clase se ha escrito explícitamente con un constructor, entonces el compilador de Java no agregará un constructor sin parámetros para la clase. El constructor puede ser Hay varias sobrecargas en una clase.

4. Interfaz

La interfaz es una clase especial. El modificador predeterminado para las variables miembro de la interfaz es public-static-final, y los métodos de la interfaz son métodos abstractos. El modificador predeterminado es public-abstract. La interfaz no puede crear objetos y no tiene ningún método de construcción. Sí, la interfaz se utiliza cuando se implementa la clase. Si una clase no abstracta implementa una interfaz, se deben implementar todos los métodos en la interfaz.

El papel de la interfaz: el desacoplamiento del programa, la definición de la especificación de restricción de la clase de implementación, si necesita expandir la función especial, también se puede implementar según el formulario de la interfaz.

La relación entre clase e interfaz: relación de realización múltiple; relación entre interfaz e interfaz: relación de herencia múltiple.

5. Sobrecarga y reescritura

Reescritura de métodos

Cuando la función de la clase principal no puede satisfacer las necesidades de la clase secundaria, el método se puede reescribir, es decir, la clase principal secundaria usa la función del mismo nombre y el método anulado por la clase secundaria usa la anotación @Override. Aquí hay una relación de herencia.

  • El nombre del método y la lista de parámetros deben ser coherentes;
  • El modificador de permiso de la subclase debe ser mayor o igual que el modificador de permiso de la clase principal;
  • El tipo de valor de retorno de la subclase debe ser menor o igual que el tipo de valor de retorno de la clase principal;
  • El tipo de excepción lanzada por la subclase debe ser menor o igual que el tipo de excepción lanzada por la clase padre;

Sobrecarga de métodos

Hay dos o más funciones con el mismo nombre en una clase, que se denominan sobrecargas de métodos. Los nombres de las funciones deben ser consistentes y las listas de parámetros son inconsistentes (el número de parámetros o los tipos de parámetros son inconsistentes).

6. Paquetes y permisos

Modificador de permisos

El modificador de permiso es para controlar la visibilidad del alcance del miembro modificado, dividido en: público, privado, protegido, predeterminado (sin modificación). Solo se puede acceder a público y protegido bajo diferentes paquetes, y protegido debe ser accesible bajo relación de herencia.

Paquete paquete

Un paquete puede entenderse como una carpeta en un sistema informático para resolver el problema de los conflictos repetidos de nombres de clases. El nombre del paquete está todo en minúsculas y la instrucción debe estar ubicada en la primera instrucción del archivo java.

2. Funciones básicas

Paquete

Oculte los detalles de implementación interna de la clase y solo exponga la interfaz externa. Por ejemplo, todos los atributos de miembro (variables de miembro) de la clase de entidad general en el escenario de desarrollo real deben estar encapsulados, lo que puede considerarse como una barrera protectora para evitar el código de esta clase Y se accede a los datos aleatoriamente mediante el código definido por la clase externa. La encapsulación adecuada puede hacer que el código del programa sea más fácil de entender y mantener, y fortalecer la seguridad.

heredar

Sobre la base de la clase principal existente, reconstruya una nueva clase, es decir, la subclase. A través del objeto de subclase, puede acceder a las variables de miembros no privados y métodos de miembros de la clase principal, y anular los métodos de miembros no privados en la clase principal. El rol de la herencia Puede mejorar la reutilización del código.

Polimorfismo

Polimorfismo significa que un objeto puede tener muchas formas, por ejemplo: la variable de tipo de referencia de la clase principal apunta al objeto de la subclase; la variable de tipo de referencia de la interfaz apunta al objeto de la clase de implementación de la interfaz; esta situación existe en la relación de herencia o realización , En el caso del polimorfismo, cuando hay una variable miembro con el mismo nombre en la clase subparental, se accede a todos los miembros de la clase padre, excepto a las funciones no estáticas con el mismo nombre.

3. Palabras clave habituales

1. Esta palabra clave

La palabra clave this representa el objeto llamador de la función. Si hay variables miembro y variables locales con el mismo nombre, el valor predeterminado es acceder a los datos de la variable local dentro del método. Los datos de la variable miembro se pueden especificar mediante la palabra clave this, en un constructor Puede llamar a otro constructor para inicializar el objeto.

2. Palabra clave estática

Modificación estática de variables miembro: si hay datos que deben compartirse para todos los objetos, puede usar la modificación estática.

Función miembro estática modificada: se puede acceder al método estático sin depender de ningún objeto.Los métodos / variables miembros no estáticos deben depender de objetos específicos para ser llamados.

Bloques de código estático modificado: la palabra clave estática se utiliza para empaquetar bloques de código estático para mejorar el rendimiento del programa. Los bloques de código estático se pueden colocar en cualquier lugar de la clase. Cuando la clase se carga por primera vez, cada bloque de código estático se ejecutará a su vez.

3. Súper palabra clave

La palabra clave super representa una referencia al espacio de la clase principal. Cuando hay miembros con el mismo nombre en la clase subprimera, la subclase tiene por defecto el acceso a los miembros de la subclase, y la palabra clave super puede usarse para especificar el acceso a los miembros de la clase principal; al crear un objeto de subclase , Primero se llamará al método de construcción predeterminado de la clase principal sin parámetros, y la palabra clave super puede especificar el método de construcción de la clase principal.

4. Instancia de palabra clave

El papel de la palabra clave instanceof: para determinar si un objeto pertenece a una categoría específica, el objeto y la categoría especificada deben tener una relación de herencia o realización. Esta palabra clave se usa generalmente para juzgar antes de la conversión de tipo forzada y luego realizar la conversión.

5. Palabras clave finales

Clase final modificada: indica que la clase no se puede heredar. Las variables miembro de la clase final se pueden establecer en final según sea necesario, pero tenga en cuenta que todos los métodos miembro de la clase final se designarán implícitamente como métodos finales.

Método de modificación final: el método de bloqueo evita que cualquier clase heredada modifique su significado; la segunda razón es la eficiencia, el método final de la clase principal no puede ser anulado por la subclase.

Variable final modificada: una variable miembro se marca como una constante y solo se puede asignar una vez. El valor no cambiará después de la asignación. Cuando el tipo de parámetro de la función se declara como final, significa que el parámetro es de solo lectura.

6. Palabras clave abstractas

Clase abstracta modificada: no se puede crear una instancia de la clase abstracta. La diferencia entre una clase abstracta y una interfaz es que no puede haber métodos de instancia en la interfaz para implementar la lógica empresarial, mientras que las clases abstractas pueden tener métodos de instancia e implementar la lógica empresarial. Las clases abstractas no se pueden utilizar Modificación final de la palabra clave, porque la clase modificada final no se puede heredar, y para las clases abstractas es necesario implementar métodos abstractos a través de la herencia.

Método de modificación abstracta: el método abstracto no tiene cuerpo de método, que es similar al método de interfaz. El método abstracto no se puede modificar con privado, porque el método abstracto debe ser implementado por subclase y el método abstracto no se puede modificar con estático. Clase abstracta. El método abstracto no tiene sentido.

Cuatro, análisis de escena

1. Patrón de diseño

Los patrones de diseño y la orientación a objetos son conceptos muy populares en los últimos años. Preguntas que deben hacerse en las entrevistas. Si desea utilizar patrones de diseño en la programación, debe comprender el mecanismo orientado a objetos, que es un alto grado de abstracción y encapsulación del problema, y ​​capa por capa. Resuelve la realización, mejora la reutilización, legibilidad, flexibilidad, mantenibilidad del código, y lo más importante es tener un alto estilo.

2. Sistema de flujo IO

Si desea comprender el código de los patrones de diseño y orientados a objetos, puede concentrarse en leer la API del sistema de flujo de IO en Java, la interfaz de nivel superior, la implementación descendente, la clase de empaquetado y la clase de extensión. Estos dos conceptos se utilizan realmente hasta el extremo. Por supuesto, el flujo IO es el núcleo del procesamiento de archivos y también vale la pena leer el código fuente.

3. Modelo de desarrollo MVC

En el modelo de desarrollo MVC, la interfaz de la capa empresarial y la implementación de la capa empresarial; la interfaz de la base de datos y la implementación del acceso a los datos también son la interfaz de uso orientada a objetos más básica y la clase de implementación de la interfaz.

Cinco, dirección de código fuente

GitHub·地址
https://github.com/cicadasmile
GitEE·地址
https://gitee.com/cicadasmile

Lectura recomendada: sistema de programación de acabado

Número de serie nombre del proyecto Dirección de GitHub Dirección GitEE Recomendado
01 Java describe patrones de diseño, algoritmos y estructuras de datos GitHub · haga clic aquí GitEE · Haga clic aquí ☆☆☆☆☆
02 Fundamentos Java, concurrencia, orientado a objetos, desarrollo web GitHub · haga clic aquí GitEE · Haga clic aquí ☆☆☆☆
03 Explicación detallada del caso del componente básico del microservicio SpringCloud GitHub · haga clic aquí GitEE · Haga clic aquí ☆☆☆
04 Caso completo de arquitectura de microservicio SpringCloud GitHub · haga clic aquí GitEE · Haga clic aquí ☆☆☆☆☆
05 Comenzando con la aplicación básica del marco SpringBoot a avanzado GitHub · haga clic aquí GitEE · Haga clic aquí ☆☆☆☆
06 SpringBoot framework integra y desarrolla middleware común GitHub · haga clic aquí GitEE · Haga clic aquí ☆☆☆☆☆
07 Caso básico de gestión de datos, distribución, diseño de arquitectura GitHub · haga clic aquí GitEE · Haga clic aquí ☆☆☆☆☆
08 Grandes series de datos, almacenamiento, componentes, informática y otros marcos GitHub · haga clic aquí GitEE · Haga clic aquí ☆☆☆☆☆   

Supongo que te gusta

Origin blog.51cto.com/14439672/2540516
Recomendado
Clasificación