English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Hoy voy a hablar sobre mi comprensión de las clases abstractas e interfaces en Java, incluyendo contenido de referencia:
1. Clase abstracta
1Definición:
public abstract class NombreClase{}
En el lenguaje Java, todos los objetos son descritos por clases, pero no todas las clases se utilizan para describir objetos. Lo que entiendo por clase abstracta es una extracción alta de la parte común de las cosas del mismo tipo, esta parte común incluye atributos y comportamientos. Por ejemplo, los animales como el buey, la oveja y el cerdo tienen atributos comunes como tener pelo y comportamientos comunes como amamantar. Por lo tanto, podemos abstraer la parte común en una clase de mamíferos, que contiene atributos como pelo y comportamientos como amamantar. Cuando el buey, la oveja y el cerdo heredan la clase de mamíferos, también tendrán la función de amamantar. En cuanto a cómo completar esta función, es necesario hacerlo oneself.
2Características
(1La clase que se modifica con el keyword Abstract es una clase abstracta;
(2La clase que se modifica con el keyword Abstract es una clase abstracta; y una clase que contiene métodos abstractos es necesariamente una clase abstracta, pero una clase abstracta no necesariamente contiene métodos abstractos; y los métodos abstractos deben ser public o protected, de lo contrario no pueden ser heredados por las subclases. Por defecto, es public.
(3No se puede tener una implementación en un método abstracto, de lo contrario, se generará un error de compilación;
(4La clase abstracta puede definir sus propias variables de miembro y métodos de miembro;
(5Cuando una subclase hereda una clase abstracta, debe implementar todos los métodos abstractos de la clase abstracta, de lo contrario, la subclase también debe definirse como clase abstracta;
(6La clase abstracta no puede ser instanciada.
3Verificación de si las regulaciones mencionadas son realmente como se describe
Esta es una tabla de verificación que edité en word, la convertí en imagen y la puse aquí:
Desde los resultados de la verificación en la imagen superior, todas las teorías son correctas
Segundo, la interfaz
1Definición:
public interface NombreDeInterfaz{}
La interfaz se utiliza para proporcionar métodos. Según mi comprensión, es una extracción alta de comportamientos comunes entre múltiples clases, por ejemplo, todos los animales tienen comportamientos comunes como comer y dormir, por lo que podemos extraer estos dos comportamientos y encapsularlos en una interfaz. Cuando un animal necesita ejecutar este comportamiento, solo necesita llamar a la interfaz y completar la implementación específica en su propia clase. Esta comprensión parece no diferir mucho de la de la clase abstracta, por lo que veamos el siguiente ejemplo. Si estos dos comportamientos se ponen en una clase abstracta, pero esta clase abstracta tiene también un comportamiento de escalar, cuando una criatura escalar como una serpiente hereda esta clase, implementará los métodos de comer, dormir y escalar, por lo que tendrá las funciones de comer y dormir; pero si un animal volador como un pájaro hereda este método, también tendrá las funciones de comer y dormir, lo que es obviamente incorrecto, ya que escalar no es una función necesaria. Esto es un poco inexacto, pero cuando heredan una interfaz que solo tiene comer y dormir, tienen las funciones básicas de comer y dormir. En cuanto a escalar y volar, pueden abstraerse y ponerse en una clase abstracta, y heredar según sea necesario, implementar las funciones necesarias según sea necesario.
2Características:
(1La interfaz puede tener sus propias variables de miembro, pero será implícitamente especificada como public static final, y solo puede ser public static final. Todos los métodos de la interfaz son métodos abstractos, que se especifican implícitamente como public abstract.
(2)Las interfaces solo definen métodos abstractos, sin implementaciones específicas;
(3)Las clases que implementan interfaces deben implementar todos los métodos definidos en la interfaz;
3、Verifica si las teorías anteriores son correctas
Del mismo modo, verifica que las teorías anteriores son correctas!
Tercero, las diferencias entre las clases abstractas y las interfaces:
1、Las clases abstractas pueden tener sus propios métodos miembro y sus implementaciones específicas; las interfaces solo pueden contener métodos abstractos;
2、Las clases abstractas pueden contener varios tipos de variables miembro; las variables miembro de las interfaces solo pueden ser public static final;
3、Una clase solo puede heredar de una clase abstracta, pero puede implementar múltiples interfaces;
4、Las clases abstractas pueden contener bloques de código estáticos y métodos estáticos; las interfaces no pueden definir bloques de código estáticos y métodos estáticos;
Verifica que una clase solo puede heredar de una clase abstracta, pero puede implementar múltiples interfaces
Primero, define dos clases abstractas: una es la clase Mammals de mamíferos, y la otra es la clase Crawler de desplazamiento
/** * @createtime 2017Año3Mes17Día Mañana10:33:27 * @description Clase de mamíferos */ public abstract class Mammals { public String foods; public abstract void nurse(); public void eat(String food){ this.foods = food; System.out.println("Comer"+foods); } }
/** * * @createtime 2017Año3Mes17Día Mañana11:23:09 * @description Define una clase abstracta--Clase de desplazamiento */ public abstract class Crawler { public abstract void crawl(); }
En segundo lugar, define dos interfaces: una es la interfaz BaseAction de nivel básico; la otra es la interfaz SpecialAction especial
/** * * @createtime 2017Año3Mes17Día Mañana11:03:42 * @description Define una interfaz llamada BasicAction */ public interface BaseAction { public String name = ""; public void eat(); public void sleep(); }
/** * @createtime 2017Año3Mes17Día Mañana11:24:56 * @description Define una interfaz para implementar comportamientos especiales */ public interface SpecialAction { public void study(); }
Luego, define una clase base People, que hereda de la clase Mummals e implementa las interfaces BaseAction y SpecialAction
/** * @createtime 2017Año3Mes17Día Mañana11:25:48 * @description Definir una clase común--Humanos, que heredan de la clase Mamíferos, implementan interfaces básicas y especiales */ public class Gente extiende Mamíferos implements AcciónBase,AcciónEspecial{ @Override public void estudiar() { // TODO Auto-Esqueleto de método generado } @Override public void comer() { // TODO Auto-Esqueleto de método generado } @Override public void dormir() { // TODO Auto-Esqueleto de método generado } @Override public void enfermera() { // TODO Auto-Esqueleto de método generado } }
Se puede ver que una subclase puede implementar múltiples interfaces
Finalmente, que la clase base Gente herede tanto de la clase Mamíferos como de la clase Crawler
/** * @createtime 2017Año3Mes17Día Mañana11:25:48 * @description Definir una clase común--Humanos, que heredan de la clase Mamíferos, implementan interfaces básicas y especiales */ public class Gente extiende Mamíferos, Crawler { @Override public void enfermera() { // TODO Auto-Esqueleto de método generado } }
Resumen
Esto es todo sobre mi comprensión personal de la abstracción de clases y interfaces en Java, espero que sea útil para todos. Los amigos interesados pueden continuar consultando nuestro sitio web:
Ejemplo de herencia y abstracción de código de bean en Spring
Introducción a la idea central de Hibernate y ejemplo de uso de interfaces
Ejemplo de uso de interfaces (interface) en Java
¡Bienvenidos a dejar comentarios sobre lo que considere que falta. ¡Gracias a todos por su apoyo a este sitio!
Declaración: Este artículo se ha obtenido de la red, es propiedad del autor original, se ha subido de manera autónoma por los usuarios de Internet, este sitio web no posee los derechos de propiedad, no ha sido editado por humanos y no asume ninguna responsabilidad legal. Si encuentra contenido sospechoso de copyright, por favor envíe un correo electrónico a: notice#w.3Aviso: Este contenido se ha obtenido de la red, es propiedad del autor original, se ha subido de manera autónoma por los usuarios de Internet, este sitio web no posee los derechos de propiedad, no ha sido editado por humanos y no asume ninguna responsabilidad legal. Si encuentra contenido sospechoso de copyright, por favor envíe un correo electrónico a: notice#w proporcionando evidencia relevante, y una vez verificado, este sitio eliminará inmediatamente el contenido infractor.