Déjame decirte el concepto básico primero
En el lenguaje Java, la clase y la interfaz abstracta son dos mecanismos que admiten definiciones de clase abstractas. Se debe precisamente a la existencia de estos dos mecanismos que Java tiene potentes capacidades orientadas a objetos. La clase y la interfaz abstracta tienen una gran similitud en el apoyo de las definiciones de clase abstracta, e incluso pueden ser reemplazados entre sí. Por lo tanto, muchos desarrolladores parecen tener opciones arbitrarias para la clase y la interfaz abstracta al definir la clase abstracta. De hecho, todavía hay una gran diferencia entre los dos. La elección de ellos incluso refleja si la comprensión de la esencia del área del problema y la comprensión de la intención de diseño es correcta y razonable.
La clase y la interfaz de abstracto se usan en el lenguaje Java para realizar clases abstractas (la clase abstracta en este artículo no se traduce de la clase abstracta, representa un cuerpo abstracto, y la clase abstracta es un método utilizado en el lenguaje Java para definir clases abstractas. Preste atención a la distinción). Entonces, ¿qué es una clase abstracta? ¿Qué beneficios pueden usar las clases abstractas que nos traen?
En el concepto orientado a objetos, sabemos que todos los objetos están representados por clases, pero al revés no lo es. No todas las clases se usan para describir objetos (clases de concretización). Si una clase no contiene suficiente información para describir un objeto concreto, dicha clase es una clase abstracta. Las clases abstractas a menudo se usan para representar conceptos abstractos que obtenemos en el análisis y el diseño de las áreas problemáticas, y son abstracciones de una serie de conceptos concretos que parecen diferentes pero esencialmente iguales. Por ejemplo: si desarrollamos un software de edición gráfica, encontraremos que hay conceptos específicos como círculos y triángulos en el campo del problema. Son diferentes, pero todos pertenecen al concepto de forma. El concepto de forma no existe en el campo del problema. Es un concepto abstracto. Se debe precisamente a que los conceptos abstractos no tienen conceptos concretos correspondientes en el área de problemas que las clases abstractas utilizadas para representar conceptos abstractos no pueden ser instanciadas.
Las funciones e interfaces virtuales a menudo se usan en el desarrollo de Java. ¿Cuál es la diferencia entre estos dos?
Resumen: Solo se puede heredar una clase padre en una subclase
Interfaz: las subclases pueden implementar múltiples interfaces
Entonces, ¿cuándo usar abstracto y cuándo usar la interfaz?
Cuando una subclase y la clase principal están en una relación, por ejemplo, un asiático es una persona, entonces una subclase asiática puede heredar la clase padre de una persona.
Cuando la subclase y la clase matriz son como una relación, por ejemplo, un Superman en Estados Unidos es como un Superman. Las habilidades de Superman no son todos, por lo que no todos son atributos. No podemos atribuir superpoderes a la clase de padres humanos. En este momento, podemos usar la interfaz
Ejemplo de código:
Public Abstract Class Man {public abstract void eat ();} Public Interface SuperPower {public void superpower ();} public class Asiadan extiende el hombre {@OverridePublic Void Eat () {System.out.println ("Asians Eat con Chopsticks");}} Public Class Amiicansuperman Extends Man Implements Superment {Public Valuepower () () {System.out.println ("American Superman Can Fly");}@overridePublic Void eat () {System.out.println ("American come With Knife and Work");} Public Static void Main (String [] AmericanSuperman (); anasiMan.eat (); anamericansuperman.eat (); anamericansuperman.superPower ();}Resultados de ejecución:
Los estadounidenses comen con cuchillo y tenedor, el superman estadounidense puede volar asiáticos con palillos
El uso correcto del resumen y la interfaz es beneficioso para mejorar la legibilidad del código. Cuando las personas ven extenderse, sabrán lo que es a. Cuando ven el implemento, pueden saber qué características tiene esta clase como a.