Hoy hablaré sobre mi propia comprensión de las clases e interfaces abstractas en Java, incluido el contenido de referencia:
1. Clase abstracta
1. Definición:
Nombre de clase pública de clase abstracta {}
Todos los objetos en el idioma Java se describen mediante clases, pero no todas las clases se usan para describir objetos. La clase abstracta que entiendo es en realidad un alto grado de extracción de las partes públicas del mismo tipo de cosas, que incluyen atributos y comportamientos. Por ejemplo, el ganado, las ovejas y los cerdos tienen todos sus atributos públicos, y los comportamientos públicos están amamantando, por lo que podemos abstraer la parte pública en un mamífero, que contiene atributos, cabello y comportamientos. Cuando el ganado, las ovejas y los cerdos heredan el mamífero, también tienen la función de la lactancia. En cuanto a cómo completar esta función, necesitan implementarla ellos mismos.
2. Características
(1) La clase modificada por la palabra clave abstracta es una clase abstracta;
(2) las clases que contienen métodos abstractos deben ser clases abstractas, pero las clases abstractas no necesariamente contienen métodos abstractos; y los métodos abstractos deben ser públicos o protegidos, de lo contrario no pueden ser heredados por subclases. El valor predeterminado es público.
(3) no puede haber implementación en el método abstracto, de lo contrario se informará la compilación;
(4) puede definir sus propias variables y métodos de miembros en una clase abstracta;
(5) Cuando una subclase hereda una clase abstracta, se deben implementar todos los métodos abstractos en la clase abstracta; de lo contrario, la subclase también debe definirse como una clase abstracta;
(6) Las clases abstractas no pueden ser instanciadas.
3. Verifique si las disposiciones anteriores son de hecho como se indica
Esta es una tabla de verificación que edité en Word, y la corté en una imagen y la pongo aquí:
A juzgar por los resultados de verificación en la figura anterior, esas teorías son correctas
2. Interfaz
1. Definición:
Nombre de la interfaz de la interfaz pública {}
La interfaz se utiliza para proporcionar métodos. Según mi entendimiento, es una extracción de alto nivel de comportamientos públicos de múltiples clases. Por ejemplo, el comportamiento público de todos los animales es comer y dormir. Luego podemos extraer y encapsular estos dos comportamientos en una interfaz. Cuando un animal necesita realizar este comportamiento, simplemente llame a la interfaz y luego complete la implementación específica en su propia clase. Esta comprensión parece no ser diferente de las clases abstractas, así que echemos un vistazo al siguiente ejemplo. Si estos dos comportamientos se colocan en una clase abstracta, pero también hay un comportamiento de rastreo en la clase abstracta. En este momento, cuando un reptil, como una serpiente, hereda esta clase, se dará cuenta de los tres métodos de comer, dormir y gatear, por lo que tiene las funciones de comer, dormir y gatear; Pero si un animal de una clase de vuelo es como un pájaro, cuando hereda este método, también tiene las funciones de comer, dormir y gatear. Es obvio que el rastreo no es la función que necesita, lo cual es un poco inconsistencia. Sin embargo, cuando heredan solo la interfaz de comer y dormir, tienen las funciones básicas de comer y dormir. En cuanto a la escalada y el vuelo, pueden abstraer y colocar en una clase abstracta, heredar a pedido y darse cuenta de las funciones que necesitan a pedido.
2. Características:
(1) La interfaz puede tener sus propias variables miembros, pero se especificarán implícitamente como final estática pública final, y solo pueden ser públicas estáticas finales. Todos los métodos en la interfaz son métodos abstractos y se especificarán implícitamente como resumen público.
(2) solo se definen métodos abstractos en la interfaz, y no hay implementación concreta;
(3) la clase que implementa una interfaz debe implementar todos los métodos definidos en la interfaz;
3. Verifique si la teoría anterior es correcta
Del mismo modo, ¡las teorías anteriores son correctas!
3. La diferencia entre clases abstractas e interfaces:
1. La clase abstracta puede tener sus propios métodos miembros y sus implementaciones específicas; La interfaz solo puede contener métodos abstractos;
2. Las clases abstractas pueden contener varios tipos de variables miembros; Las variables miembros en las interfaces solo pueden ser públicas estáticas finales;
3. Una clase solo puede heredar una clase abstracta, pero puede implementar múltiples interfaces;
4. Las clases abstractas pueden contener bloques de código estatales y métodos estáticos; Los bloques de código estáticos y los métodos estáticos no se pueden definir en la interfaz;
Verifique que una clase solo pueda heredar una clase abstracta, pero puede implementar múltiples interfaces
Primero, defina dos clases abstractas: un mamífero Mummals y una clase de reptiles de rastreador
/** * @CreateTime 17 de marzo de 2017 a las 10:33:27 am * @Description Mammals */public abstract Class Mammals {public String Foods; public abstract void nurse (); public void eat (string food) {this.foods = food; system.println ("Eat"+Foods);}} /** * * @CreateTime 17 de marzo de 2017 a las 11:23:09 AM * @Description Define una clase abstracta - Class Crawler */Public Abstract Class Crawler {public Abstract void Crawl ();}En segundo lugar, defina dos interfaces: una es la interfaz básica de Baseaction; la otra es la interfaz especial de especialacción
/** * * @CreateTime 17 de marzo de 2017 a las 11:03:42 am * @Description Define una interfaz llamada Basic Behavior */Public Interface Baseaction {public String name = ""; public void eat (); public void sleep ();} /*** @CreateTime 17 de marzo de 2017 a las 11:24:56 AM* @Description Define una interfaz para implementar un comportamiento especial*/Interface Public SpecialAction {Public void Study ();}Luego, defina a una clase básica, herede la clase Mummals e implementa la interfaz Baseaction y la interfaz especializada
/** * @CreateTime 17 de marzo de 2017 a las 11:25:48 am * @Description Define una clase común: humanos, herederos mamíferos, implementan interfaces básicas e interfaces especiales */public class People extiende los implementos de mamíferos Baseaction, especialACTI Método generado automático} @Override public void sleep () {// TODO Método Generado automático STUB} @Override public void nurse () {// TODO Auto Generado Stub}}Se puede ver que una subclase puede implementar múltiples interfaces.
Finalmente, deje que la gente de la clase básica herede la clase Mummals y la clase de rastreadores al mismo tiempo
/** * @CreateTime 17 de marzo de 2017 a las 11:25:48 AM * @description Define una clase común: humanos, herederos mamíferos, implementan interfaces básicas e interfaces especiales */personas de clase pública extiende mamíferos, Crawler {@Override public Void Nurse () {// TODO Auto Generated Method stub}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}Resumir
Lo anterior es todo el contenido de este artículo sobre cómo discutir brevemente la comprensión personal de las clases e interfaces abstractas de Java. Espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a este sitio:
Ejemplos de herencia y código abstracto de frijoles en primavera
Introducción a las ideas e interfaces centrales de Hibernate
Ejemplos de métodos de interfaz y uso en Java
Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!