Para nada aburridas tus clases, como decís al final de los videos. Es un gusto escuchar tus explicaciones, no paro de aprender. Miles de gracias por este y tus otros cursos🙌🙏
"Aunque hay humanos que piensan menos que una lagartija, pero ese es otro tema" JAJAJAJAJA buenísimo! AMO sus cursos! Qué buena forma de romper el hielo esa frase!
No sé si llegaras a leer este mensaje, pero quería agradecer todo el trabajo hecho con este curso. Llevo vistos desde el primer vídeo del curso hasta este, y cada vez estoy ganando mas motivación a la vez que voy aprendiendo más. Muchas gracias por todo!
Gracias a ti por seguir mis vídeos y enhorabuena por tu perseverancia. Se que no es fácil comenzar desde el primero llegar hasta aquí y que aún queden ganas de continuar. Un saludo!
yo llevo 3 semanas viendo el curso, 5 veces lo he visto, ayer empecé de nuevo para pulir conocimientos, más de 48 horas, leal a tus cursos, luego sigo con html@@pildorasinformaticas
Muy bien explicado. Valoro mucho tu explicación, super claro y preciso. En realidad se aprende mucho. La programación se trata de entender y no simplemente copiar código. Y tus clases están enfocado a eso, a que nosotros comprendamos.
tus clases teoricas son lo mejor que he encontrado en los cursos, sean de pago o gratis, son brutales. me entuciasmo quiero ver las clases como hacemos las aplicaciondes, pero soy consiente q sin teoria la practica sera de baja asimilacion 👍🏽
Excelente explicación. Si combinamos este curso con algo sobre patrones de diseño nos dará un muy buena base para ser buenos programadores. Aplicar correctamente estos conceptos son buenas practicas de programación.
Excelente explicación de clases y métodos abstractos, pensar que todavía falta conocer más conceptos del lenguaje para desarrollar aplicaciones reales me muestra mis límites pero a la vez las ganas que tengo para superarme cada día, una vez más, gracias x1000.
Gracias por el contenido, maestro. De todas formas, me gustaría discutirte la explicación sobre la clase abstracta. La clase abstracta se denomina así porque no permite instancias de la misma, es decir, es meramente conceptual; todo lo contrario a una clase concreta, que sería aquella que sí permite instancias, porque todos sus métodos han sido definidos (y aquella clase que es totalmente concreta, se puede sellar - sealed). Un saludo.
Gracias por el comentario. Según tengo yo entendido, el término "abstracta" es por la abstracción que tienen este tipo de clases. A medida que subes por la jerarquía de la herencia las clases van siendo menos específicas y más abstractas, es decir, la abstracción se va incrementando y se va perdiendo especificidad. Las clases abstractas suelen estar en la parte alta de la jerarquía de la herencia. Cuanto más alta está una clase en la jerarquía menos cosas puede hacer y por ende más abstracta es. Este concepto de "clase abstracta" lo aprendí yo en su día del libro Core Java 2 de la editorial Prentice Hall, libro oficial (en realidad eran dos libros de más de 1000 páginas cada uno) de Sun Microsystems (hoy en día Oracle) que me tuve que estudiar a conciencia para preparar la certificación SCJP. En este libro explican casi con las mismas palabras lo que explico yo en mis cursos de POO sobre el concepto de clase abstracta. Un saludo!
Para los ansias de empezar a hacer aplicaciones: hay libros sólo de eso o cursos de Udemy que se dedican a empezar aplicaciones desde la base y tiran de varios vídeos hasta que la terminan.
Yo también tengo la misma duda, y he llegado a la conclusión que son similares, y que la diferencia principal está en que, una interface no te permite implementar o desarrollar el código de ninguno de sus métodos, para que todos tengan que ser desarrollados en cada una de las clases heredadas; mientras que en una clase abstracta, si que puedes implementar los métodos que te interesen que sean heredados tal y como están en esta clase abstracta , y también te permite que otros métodos (los abstractos), no los tengas que desarrollar para que sean implementados (codificados) en cada clase que herede de esta clase abstracta y así los puedas desarrollar como mejor te convenga en cada clase heredada. Esto es lo que yo entendí, pero voy algo atrasado con este curso y quizás más adelante, vea que hay otras diferencias o usos que desconozco. Un saludo.
Podrias tomarlo como que una interfaz es una clase lo mas abstracta posible(tanto que no se puede declarar ningun metodo no abstracto) y una clase abstracta aun conserva algo de lo que es ser una clase(metodos especificos y desarrollados para las instancias de esa clase o las que hereden).Espero no liarte mucho jeje.En realidad tampoco es muy importante,si lleva metodos propios aun(fijarse en el aun) es clase abstracta,si no interfaz.
Muchas Gracias por la dedicación y esfuerzo en cada video. Me quedo una duda en este video, el método getNombre de la clase Animales, lo podríamos hacer virtual y luego en la clase Lagartija usar override.. Se puede hacer eso?.. O el método debe ser abstracto.. Ojala me puedas responder. Y nuevamente gracias
Buenos días a tod@s, Primero de todo apuntar que me gustan muchos los cursos. Solo quería realizar un pequeño apunte, perdón por parecer quisquilloso. El tema es el término mamífero y vivíparo. Mamífero viene de la palabra mama. Esa denominación se da porque las crías se alimentan de las mamas que producen leche. Luego viene el término de vivíparo que significan que nacen del vientre de la madre. Hay mamíferos ovíparos como el ornitorrinco. Por último, recalcar que me gustan sus videos. Únicamente quería dejar ese apunte porque muchas personas se confunde. Saludos, Emilio
@@VCELUISBuenas tardes sr Luis. No estoy diciendo que valga o no sea útil ese ejemplo. Estoy indicando el fallo que tiene igualar mamífero con vivíparo. Aunque sea válido el ejemplo y se entienda la finalidad (en ningún momento he negado eso.) Solamente quería señalar que los dos términos: mamífero y vivíparo no son sinónimos. Solo eso. Un saludo, Emilio
hola si acaso llega a leer me, tengo una pregunta en este ejemplo y si la herencia multiple no es permitida en este lenguaje y esto no lo entiendo pues el empleado hereda pero el director que es el ultimo dices hereda de persona, empleado y en fin
Pregunta... ¿Si sacamosos la Clase Lagartija, y hacemos el método Pensar() un método Abstracto (solo ese), la clase Mamíferos podría perfectamente ser Abstracta?
No hay que apresurarce :v Recién estoy aprendiendo a usar ReactJs y ahí uno no puede saltarce la documentación para comenzar a desarrollar XD De hecho ni documentándome me salen bien algunas cosas :'v
Una pregunta, supongamos que Juan, el jefe, está estudiando para ser director, y por lo tanto tiene algunas propiedades de un alumno. Pero el alumno si bien es una persona al igual que el jefe, no pertenece a la misma rama del arbol de jerarquía. ¿Cómo puedo crear un jefe Juan que herede tanto a la clase Jefe como la clase Alumno? Muchisimas gracias por haberme enseñado C#!!
Por lo que te he entendido de las clases abstractas lo que explicas al final de por qué se llaman abstractas no tiene sentido, tal como lo explicas la clase object sería una clase abstracta ya que es la que menos funciones tiene . Yo más bien veo el nombre porque algunos métodos que contienen al no estar definidos son una abstracción de lo que deben ser sus subclases.
Una de las características que suelen tener las clases abstractas es que tienen pocas funciones. Es uno de los motivos por las que se les denomina abstractas, porque al tener pocas funciones (poca funcionalidad) su abstración es mayor. Pero (y aquí lo importante) la definición de una clase abstracta no es "la que tiene menos funciones" (y no dije eso en el curso) sino que se trata de una de sus características. Una clase abstracta es una clase que no se puede instanciar directamente, lo que significa que no puedes crear objetos de ella. En lugar de eso, se utiliza como base para otras clases. Las clases abstractas son útiles cuando quieres proporcionar una implementación común a un grupo de clases, pero al mismo tiempo, forzar que las clases derivadas implementen ciertos métodos o propiedades. Así lo explico en todos mis cursos de POO. ¡Saludos!
@@pildorasinformaticas No lo veo así. La abstracción no proviene de que tenga pocas funciones o no. La abstracción es básicamente aislar la esencia de algo, en este caso sería definir la esencia o hacer un esquema a aquellos objetos que van a heredar de ella. El máximo caso de abstracción serían los interfaces, solo definen la esencia de las clases que las implementen; en el caso de las clases abstractas sería un paso intermedio ya que permiten abstraer con métodos abstractos y permiten concretar con métodos "normales". Así pues la abstracción no vendría de su poca funcionalidad sino de su estructura en forma de esquema.
No modifico ni una coma a lo que dices. Efectivamente la abstracción no proviene de que tenga pocas funciones o no, pero como dije, una de las características que suelen tener las clases abstractas es que tienen pocas funciones. "SUELEN". En el tomo I de los libros Core Java de la editorial Prentice Hall (los libros oficiales que te recomendaban para preparar la certificación cuando era JSA de Sun Microsystem) que son los que yo estudié en su día, mencionan: "a medida que ascendemos en la jerarquía de la herencia, las clases van siendo cada vez más abstractas ya que estas suelen definir comportamientos y características más generales que pueden ser compartidos por muchas subclases." Término "suelen" nuevamente. Y continúan diciendo: "Las clases en la parte alta de la jerarquía de la herencia suelen definir comportamientos y características más generales que pueden ser compartidos por muchas subclases. Esto significa que las clases en los niveles superiores de la jerarquía tienden a ser más generales y abstractas, mientras que las clases en los niveles inferiores son más concretas y específicas." E insisto una vez más: la definición de abstracta no es "que tengas pocas funciones", sino que es una característica que SUELEN tener. Y lo que yo pretendo transmitir en todos los vídeos de POO cuando hablo de herencia y abstracción es que en general, a medida que las clases se vuelven más abstractas en una jerarquía de herencia, suelen tener menos métodos. Sin embargo, como bien señalas, esto no es una regla estricta, sino más bien una tendencia común en el diseño orientado a objetos. Pero oye, para dudas y comprobar si lo que digo es cierto, abrir la API y observar cualquier jerarquía de herencia. ¡Saludos!
7:17 queda muy claro que se refiere a la mayoría de sus alumnos, que te crees vos para hacerte que sabes todo y que no pasaste por esa etapa? egocentrico
Para nada aburridas tus clases, como decís al final de los videos. Es un gusto escuchar tus explicaciones, no paro de aprender. Miles de gracias por este y tus otros cursos🙌🙏
"Aunque hay humanos que piensan menos que una lagartija, pero ese es otro tema" JAJAJAJAJA buenísimo! AMO sus cursos! Qué buena forma de romper el hielo esa frase!
Si entendiste los primeros 5 minutos de este video, quiere decir que los 51 videos vistos hasta ahora los has entendido. Muy buena recapitulacion.
07:16 épico 😂. Gracias por el contenido Juan, saludos!
No sé si llegaras a leer este mensaje, pero quería agradecer todo el trabajo hecho con este curso. Llevo vistos desde el primer vídeo del curso hasta este, y cada vez estoy ganando mas motivación a la vez que voy aprendiendo más. Muchas gracias por todo!
Gracias a ti por seguir mis vídeos y enhorabuena por tu perseverancia. Se que no es fácil comenzar desde el primero llegar hasta aquí y que aún queden ganas de continuar. Un saludo!
yo llevo 3 semanas viendo el curso, 5 veces lo he visto, ayer empecé de nuevo para pulir conocimientos, más de 48 horas, leal a tus cursos, luego sigo con html@@pildorasinformaticas
Muy bien explicado. Valoro mucho tu explicación, super claro y preciso. En realidad se aprende mucho. La programación se trata de entender y no simplemente copiar código. Y tus clases están enfocado a eso, a que nosotros comprendamos.
Estoy siguiendo el curso en el 2022 y pues es una genialidad! Gracias por tanto aporte de calidad que haces a la humanidad.
Explicación super clara, como siempre. Se agradecen estos videos teóricos!
tus clases teoricas son lo mejor que he encontrado en los cursos, sean de pago o gratis, son brutales. me entuciasmo quiero ver las clases como hacemos las aplicaciondes, pero soy consiente q sin teoria la practica sera de baja asimilacion 👍🏽
Cuando lo Abstracto se hace transparente ........Gracias Juan ¡¡
Excelente explicación. Si combinamos este curso con algo sobre patrones de diseño nos dará un muy buena base para ser buenos programadores. Aplicar correctamente estos conceptos son buenas practicas de programación.
Excelente explicación de clases y métodos abstractos, pensar que todavía falta conocer más conceptos del lenguaje para desarrollar aplicaciones reales me muestra mis límites pero a la vez las ganas que tengo para superarme cada día, una vez más, gracias x1000.
+10 excelente, muchas gracias por compartir profe, saludos desde Costa Rica!
Gracias Juan por tu dedicación, creo que todos quienes te seguimos estamos muy agradecidos...
Gracias a ti por el comentario y por seguir el curso. Un saludo!
Mencionas que pueden ser aburridas las clases teóricas, pero para mi me ayudan bastante tus ejemplos gráficos, muchas gracias.
Muy buena explicación. Gracias por el tiempo que dedicas a los cursos.
Gracias por el comentario. Un saludo!
Felicidades por el enfoque y la claridad de las explicaciones de cada nueva lección!
Sos un master! gracias por la info, ví este video por estar aprendiendo Java en otra plataforma. Este tema no lo tenia muy claro y ahora sí lo tengo !
Maestro de la sencillez. Magistral
Magistral clase.
Excelente como siempre saludos desde Cuba
Excelentes cursos.
Excelente forma de enseñar , muy vacano el curso, Dios le bendiga profe, saludos desde Colombia
Admiro tu forma de explicar :), gracias por tu contenido!
Estupenda explicacion. Agradecido Maestro!!!
GRACIAS !! ME SIRVEN MUCHO SUS CLASES, SALUDOS DESDE MEXICO !!
estas explicaciones me vienen bien antes de meterle al codigo, muchas gracias!
IM PRE SI O NAN TE TU CURSO, FELICIDADES Y GRACIAS.
excelente...muy claro..crack!
Excelente explicacion!!!!!
Muy buena explicación de las clases abstractas...Gracias!
"Aunque hay humanos que piensan menos que una lagartija" (Golden Point del video) jajaja qué genio Juan
Gracias por el video, esta bien explicado para entender las clases abstractas.
Gracias!! Excelente video y explicación
Muy buena explicación, muchas gracias maestro Juan. Saludos
Gracias a ti por seguir mis vídeos. Un saludo!
Profesor disculpe una pregunta get nombre no se podria hacer virtul y sobreescribirlo en lagartiga
Gracias por el contenido, maestro.
De todas formas, me gustaría discutirte la explicación sobre la clase abstracta. La clase abstracta se denomina así porque no permite instancias de la misma, es decir, es meramente conceptual; todo lo contrario a una clase concreta, que sería aquella que sí permite instancias, porque todos sus métodos han sido definidos (y aquella clase que es totalmente concreta, se puede sellar - sealed).
Un saludo.
Gracias por el comentario. Según tengo yo entendido, el término "abstracta" es por la abstracción que tienen este tipo de clases. A medida que subes por la jerarquía de la herencia las clases van siendo menos específicas y más abstractas, es decir, la abstracción se va incrementando y se va perdiendo especificidad. Las clases abstractas suelen estar en la parte alta de la jerarquía de la herencia. Cuanto más alta está una clase en la jerarquía menos cosas puede hacer y por ende más abstracta es.
Este concepto de "clase abstracta" lo aprendí yo en su día del libro Core Java 2 de la editorial Prentice Hall, libro oficial (en realidad eran dos libros de más de 1000 páginas cada uno) de Sun Microsystems (hoy en día Oracle) que me tuve que estudiar a conciencia para preparar la certificación SCJP. En este libro explican casi con las mismas palabras lo que explico yo en mis cursos de POO sobre el concepto de clase abstracta. Un saludo!
Esas son características de una clase abstracta; en este caso explico la funcionalidad de las clases abstractas.
Excelentes videos, con muy buena explicación!
excelente explicación.
Para los ansias de empezar a hacer aplicaciones: hay libros sólo de eso o cursos de Udemy que se dedican a empezar aplicaciones desde la base y tiran de varios vídeos hasta que la terminan.
Gracias!
Usas la tecnica FEYNMAN para explicar, verdad?
cual es la diferencia en la practica entre un metodo abstarcto y un metodo virtual?
Hola juan excelente vídeo, con una explicación muy buena .Juan Cual es la diferencia entre una clase abstracta y una interfaz?
Yo también tengo la misma duda, y he llegado a la conclusión que son similares, y que la diferencia principal está en que, una interface no te permite implementar o desarrollar el código de ninguno de sus métodos, para que todos tengan que ser desarrollados en cada una de las clases heredadas; mientras que en una clase abstracta, si que puedes implementar los métodos que te interesen que sean heredados tal y como están en esta clase abstracta , y también te permite que otros métodos (los abstractos), no los tengas que desarrollar para que sean implementados (codificados) en cada clase que herede de esta clase abstracta y así los puedas desarrollar como mejor te convenga en cada clase heredada. Esto es lo que yo entendí, pero voy algo atrasado con este curso y quizás más adelante, vea que hay otras diferencias o usos que desconozco. Un saludo.
Podrias tomarlo como que una interfaz es una clase lo mas abstracta posible(tanto que no se puede declarar ningun metodo no abstracto) y una clase abstracta aun conserva algo de lo que es ser una clase(metodos especificos y desarrollados para las instancias de esa clase o las que hereden).Espero no liarte mucho jeje.En realidad tampoco es muy importante,si lleva metodos propios aun(fijarse en el aun) es clase abstracta,si no interfaz.
Zarpado! Las lagartijas se clonan no se reproducen como en otras especies!
Muchas Gracias por la dedicación y esfuerzo en cada video. Me quedo una duda en este video, el método getNombre de la clase Animales, lo podríamos hacer virtual y luego en la clase Lagartija usar override.. Se puede hacer eso?.. O el método debe ser abstracto.. Ojala me puedas responder. Y nuevamente gracias
¿Que programa usa para hacer los diagramas y esquemas?
Buenos días a tod@s, Primero de todo apuntar que me gustan muchos los cursos. Solo quería realizar un pequeño apunte, perdón por parecer quisquilloso. El tema es el término mamífero y vivíparo. Mamífero viene de la palabra mama. Esa denominación se da porque las crías se alimentan de las mamas que producen leche. Luego viene el término de vivíparo que significan que nacen del vientre de la madre. Hay mamíferos ovíparos como el ornitorrinco. Por último, recalcar que me gustan sus videos. Únicamente quería dejar ese apunte porque muchas personas se confunde.
Saludos, Emilio
nos vale vg
@@VCELUISBuenas tardes sr Luis. No estoy diciendo que valga o no sea útil ese ejemplo. Estoy indicando el fallo que tiene igualar mamífero con vivíparo. Aunque sea válido el ejemplo y se entienda la finalidad (en ningún momento he negado eso.) Solamente quería señalar que los dos términos: mamífero y vivíparo no son sinónimos. Solo eso. Un saludo, Emilio
Profe el curso de C# ya finalizó?
hola si acaso llega a leer me, tengo una pregunta en este ejemplo y si la herencia multiple no es permitida en este lenguaje y esto no lo entiendo pues el empleado hereda pero el director que es el ultimo dices hereda de persona, empleado y en fin
Pregunta... ¿Si sacamosos la Clase Lagartija, y hacemos el método Pensar() un método Abstracto (solo ese), la clase Mamíferos podría perfectamente ser Abstracta?
excelente
Las clases teóricas son mis favoritas
Son en las que mas tardo tomando nota porque hay muchas cosas importantes pero no quita que sean las que mas me gustan
Qué crack con lo de la lagartija JAJAJAJA
Cuando un método abstracto?
creo que ya lo comenté pero a mi una interface se me hace como una guia de que métodos deben haber en una clase
No hay que apresurarce :v
Recién estoy aprendiendo a usar ReactJs y ahí uno no puede saltarce la documentación para comenzar a desarrollar XD
De hecho ni documentándome me salen bien algunas cosas :'v
Una pregunta, supongamos que Juan, el jefe, está estudiando para ser director, y por lo tanto tiene algunas propiedades de un alumno. Pero el alumno si bien es una persona al igual que el jefe, no pertenece a la misma rama del arbol de jerarquía. ¿Cómo puedo crear un jefe Juan que herede tanto a la clase Jefe como la clase Alumno?
Muchisimas gracias por haberme enseñado C#!!
07:18 DIOS, Juan hasta donde quieres meter a los humanos Lol..
:)))
Estaría bien que cuando dice esas cosas pusiera ejemplos... :)
Podriamos pensar lo abstracto como lo menos preciso y lo más abarcador.
Se supone, jajjajajaa 😆😆
Le faltó mencionar lo más importante y es que de una clase abstracta no se pueden crear objetos.
jajajaj me mataste.... hay humanos que piensan menos que una lagartija xD
Llamarte "fiera" es quedarse corto. Te llamaré "máquina".
Clase abstracta: menos detalles.
Clase derivada: más detalles.
👀
Pro
jaja totalmente de acuerdo, hay humanos que piensan menos que una lagartija jaja
🦎
ddaddsaads
Por lo que te he entendido de las clases abstractas lo que explicas al final de por qué se llaman abstractas no tiene sentido, tal como lo explicas la clase object sería una clase abstracta ya que es la que menos funciones tiene . Yo más bien veo el nombre porque algunos métodos que contienen al no estar definidos son una abstracción de lo que deben ser sus subclases.
Una de las características que suelen tener las clases abstractas es que tienen pocas funciones. Es uno de los motivos por las que se les denomina abstractas, porque al tener pocas funciones (poca funcionalidad) su abstración es mayor. Pero (y aquí lo importante) la definición de una clase abstracta no es "la que tiene menos funciones" (y no dije eso en el curso) sino que se trata de una de sus características. Una clase abstracta es una clase que no se puede instanciar directamente, lo que significa que no puedes crear objetos de ella. En lugar de eso, se utiliza como base para otras clases. Las clases abstractas son útiles cuando quieres proporcionar una implementación común a un grupo de clases, pero al mismo tiempo, forzar que las clases derivadas implementen ciertos métodos o propiedades. Así lo explico en todos mis cursos de POO. ¡Saludos!
@@pildorasinformaticas No lo veo así. La abstracción no proviene de que tenga pocas funciones o no. La abstracción es básicamente aislar la esencia de algo, en este caso sería definir la esencia o hacer un esquema a aquellos objetos que van a heredar de ella. El máximo caso de abstracción serían los interfaces, solo definen la esencia de las clases que las implementen; en el caso de las clases abstractas sería un paso intermedio ya que permiten abstraer con métodos abstractos y permiten concretar con métodos "normales".
Así pues la abstracción no vendría de su poca funcionalidad sino de su estructura en forma de esquema.
No modifico ni una coma a lo que dices. Efectivamente la abstracción no proviene de que tenga pocas funciones o no, pero como dije, una de las características que suelen tener las clases abstractas es que tienen pocas funciones. "SUELEN".
En el tomo I de los libros Core Java de la editorial Prentice Hall (los libros oficiales que te recomendaban para preparar la certificación cuando era JSA de Sun Microsystem) que son los que yo estudié en su día, mencionan: "a medida que ascendemos en la jerarquía de la herencia, las clases van siendo cada vez más abstractas ya que estas suelen definir comportamientos y características más generales que pueden ser compartidos por muchas subclases." Término "suelen" nuevamente. Y continúan diciendo: "Las clases en la parte alta de la jerarquía de la herencia suelen definir comportamientos y características más generales que pueden ser compartidos por muchas subclases. Esto significa que las clases en los niveles superiores de la jerarquía tienden a ser más generales y abstractas, mientras que las clases en los niveles inferiores son más concretas y específicas." E insisto una vez más: la definición de abstracta no es "que tengas pocas funciones", sino que es una característica que SUELEN tener. Y lo que yo pretendo transmitir en todos los vídeos de POO cuando hablo de herencia y abstracción es que en general, a medida que las clases se vuelven más abstractas en una jerarquía de herencia, suelen tener menos métodos. Sin embargo, como bien señalas, esto no es una regla estricta, sino más bien una tendencia común en el diseño orientado a objetos. Pero oye, para dudas y comprobar si lo que digo es cierto, abrir la API y observar cualquier jerarquía de herencia. ¡Saludos!
que mareo me dio todo eso
Hay humanos que piensan menos que una lagartija jajajaja....
JAJAJAJAJAJJAJAJJAJAJAJAJA
No entendi para que sirve el abstracto, y vi el video varias veces espero que colocandolo en practica entienda, lo confundo con las interfaces
Son aquellas que poseen pocos metodos pero que se utilice en todas las clases
7:17 queda muy claro que se refiere a la mayoría de sus alumnos, que te crees vos para hacerte que sabes todo y que no pasaste por esa etapa? egocentrico
Clase abstracta ¿por qué usas palabras tan poco comunes?
Yo lo llamaría Clase indefinida y las demás Clase especializada.