Aprendizaje basado en cero Java 08

Tabla de contenido

heredar

súper palabra clave

Relación de constructores en la herencia

Escenarios de uso de herencia

Consejos de diseño heredados

polimorfismo

Características de acceso a miembros en polimorfismo


heredar

  • Herencia: cuando los mismos atributos (variables de miembro) y comportamientos (métodos de miembro) existen en varias clases, extraiga estos contenidos en una sola clase, entonces varias clases no necesitan definir estos atributos y comportamientos, siempre que hereden esa clase.

  • La herencia de clases y clases se puede realizar a través de la palabra clave extends

    class 子类名 extends 父类名{}
    

  • Una clase separada se denomina clase principal, clase base o superclase, y una subclase también se denomina clase derivada. El contenido de la clase principal es el contenido repetido por varias subclases.
  • Los beneficios de la herencia : 1. Mejorar la reutilización del código, y los mismos miembros de varias clases se pueden colocar en la misma clase 2. Mejorar la mantenibilidad del código Si es necesario modificar el código de la función, solo la clase padre necesita ser modificada. Un lugar es suficiente 3. Que haya una relación entre clases, que es la premisa del polimorfismo (esta es también la deficiencia de la herencia), que mejora el acoplamiento de clases
  • Principios de desarrollo : bajo acoplamiento, alta cohesión
  • Desventajas de la herencia : 1. Rompe la encapsulación, la subclase está estrechamente unida con la clase principal y la subclase depende de la implementación de la clase principal, lo que da como resultado la falta de independencia de la subclase 2. Admite la expansión, pero a menudo aumenta la complejidad de la estructura del sistema Costo 3. La herencia dinámica no es compatible y las subclases no pueden elegir diferentes clases principales en tiempo de ejecución 4. Las subclases no pueden cambiar la interfaz de la clase principal
  • Características de la herencia : 1. Java solo admite herencia única, no herencia múltiple de clases. Una clase solo puede tener una clase principal y no puede tener varias clases principales. 2. Java admite herencia de múltiples capas (sistema de herencia)
    class A{}
    class B extends A{}
    class C extends B{}
    

  • Las subclases solo pueden heredar todos los métodos de miembros no privados y las variables de miembros en la clase principal
  • La subclase no puede heredar el constructor de la clase principal, pero puede acceder al constructor de la clase principal a través de la palabra clave super
  • No heredar para funcionalidad parcial
  • En Java, toda herencia es herencia pública.
  • La herencia nunca elimina ningún campo o método.
  • La clase Object es la clase principal de todas las clases en Java. Si una clase no indica explícitamente la clase principal, la clase Object se considera la clase principal de esta clase, y esta clase accede a la estructura sin argumentos de Object. clase por defecto.

El orden de ejecución para acceder a una variable en una subclase : primero búsquela en el ámbito local de la subclase, luego búsquela en el ámbito de miembro de la subclase y finalmente búsquela en el ámbito de miembro de la clase principal (no puede acceder a la alcance local de la clase padre), si o no hay error 

súper palabra clave

  • super tiene dos significados: 1. Llamar al método de la clase padre 2. Llamar al constructor de la clase padre
  • Llamar a la variable miembro de la clase principal
    super.成员变量
    

  • Llame al constructor de la clase principal (la declaración que usa super para llamar al constructor debe ser la primera declaración del constructor de la subclase)
    super(参数)
    
  • Llamar al método miembro de la clase padre
    super.成员方法
    

    Nota:

  • super no es una referencia a un objeto, no puede asignar el valor super a otra variable de objeto, es solo una palabra clave especial que indica al compilador que llame a un método de clase principal
  • esto representa la referencia correspondiente de esta clase, a través de la cual se operan los miembros de esta clase, y super representa la identificación del espacio de almacenamiento de la clase padre

Relación de constructores en la herencia

  • Todos los constructores de la subclase accederán al constructor sin argumentos de la clase principal de forma predeterminada, porque la subclase heredará los datos de la clase principal y también puede usar los datos de la clase principal, por lo que la clase principal debe completarse antes que la clase principal. la subclase se inicializa Inicialización de datos (primero inicialice la clase principal y luego inicialice la subclase, esto se denomina inicialización jerárquica)
  • La primera declaración de cada método de construcción de la subclase es super(), que es el valor predeterminado del sistema, y ​​se puede escribir o no. Se llama al constructor sin argumentos de la clase principal y se llama al constructor de la clase principal. debe llamarse manualmente, de lo contrario se informará un error

Escenarios de uso de herencia

Usa el método de hipótesis: si hay dos clases A y B, siempre que cumplan la relación de que A es un tipo de B o B es un tipo de A (A es B) o (B es A), puedes considerar usando la herencia

 

Consejos de diseño heredados

  1. Al definir una subclase a través de la clase principal, solo necesita señalar la diferencia entre la subclase y la clase principal en la subclase, y colocar los campos y métodos comunes (ya sean abstractos o no) en la clase principal (ya sea abstracta o no). ) clase), y los métodos más específicos se colocan en subclases

polimorfismo

  • Polimorfismo: una variable de objeto puede indicar múltiples tipos reales de fenómenos (múltiples estados de un objeto en diferentes momentos)
  • Los requisitos previos para usar el polimorfismo: 1. Debe haber una relación de herencia 2. Debe haber una reescritura de métodos 3. Debe haber una referencia de clase principal que apunte a un objeto de subclase
    父类名 f = new 子类名();
    

  • Los beneficios del polimorfismo: 1. Mejorar la mantenibilidad del código 2. Mejorar la escalabilidad del código
  • Transformación ascendente
    fu f = new zi();
    

  • Transformación a la baja
    zi z = (zi)f;//要求该f必须是能够转换为zi的
    

 

Características de acceso a miembros en polimorfismo

  • Variables miembro: compile para ver la clase principal, ejecute para ver la clase principal
  • Método miembro: compile para ver la clase principal, ejecute para ver la subclase (ya que solo los métodos miembro tienen reescritura de métodos, por lo que se ejecuta para ver la subclase)
  • Método estático: compilar para ver la clase principal, ejecutar para ver la clase principal (la estática está relacionada con la clase, no se reescribe, por lo que el acceso sigue siendo la clase principal)
  • Enlace dinámico (enlace tardío) : el método apropiado se puede seleccionar automáticamente en tiempo de ejecución. El enlace dinámico en Java es el comportamiento predeterminado. El enlace dinámico es un factor importante para la realización del polimorfismo.
  • Enlace estático (early binding) : Ha sido enlazado antes de ejecutar el programa, es decir, el método de qué clase se conoce el método durante el proceso de compilación, en este momento el compilador obtiene la implementación de otros programas de conexión. En Java, los métodos y constructores modificados estáticos, privados y finales están todos vinculados estáticamente, y el contenido específico de este método puede conocerse sin necesidad de ejecución de programa u objetos de instancia específicos.

Supongo que te gusta

Origin blog.csdn.net/timberman666/article/details/130161480
Recomendado
Clasificación