1461
Aprender a programar desde cero / Re:Duda al usar clases abstractas en Java
« en: 31 de Julio 2014, 00:29 »
Hola, igualmente saludos y bienvenido. Lo primero que te recomendaría es que revisaras los conceptos tal y como se explican en el curso Java desde cero que tenemos en esta url: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188
En relación a las cuestiones que comentas y tratando de ser breve:
En un esquema de herencia tienes acceso a los métodos de las superclases por ser públicos. A través de los métodos get puedes acceder a los atributos.
En principio no tendrás acceso a los atributos por ser private. Pero si lo deseas, puedes declararlos como protected. Este modificador de acceso permite que las subclases conozcan los atributos de las superclases.
Cuando te refieres a que al aplicar la polimorfia no puedes acceder... : puedes acceder a todo lo que sea común (definido en las superclases). Si quieres acceder a métodos propios de una subclase, necesitarás identificar el tipo exacto con el que estás trabajando usando instance of o de otras maneras.
Para saber cuándo aplicar clases abstractas mira el curso.
Sobre la diferencia entre clases abstractas e interfaces: todo se mueve en niveles de abstracción. El máximo nivel de abstracción viene dado por las interfaces. Una clase abstracta podemos verlo como un nivel intermedio de abstracción. Y una clase concreta es el nivel más bajo de abstracción. El manejo de estos conceptos es un poco confuso sobre todo cuando no se tiene experiencia trabajando con ellos. A medida que vayas realizando el diseño de programas usándolos posiblemente tú mismo irás viendo qué es lo más conveniente.
Se hace quizás un poco complicado hablar sobre conceptos, quizás poniéndote ejemplos o viendo el código creado por otras personas, al ser algo aplicado y práctico, también puede ayudar. Si pegas el código que has creado (para ello pulsa el botón # del foro y al aparecer las etiquetas [ code ] ... [ / code] e indicas dónde tienes los problemas podemos tratar de revisarlo de forma más práctica.
Saludos.
En relación a las cuestiones que comentas y tratando de ser breve:
En un esquema de herencia tienes acceso a los métodos de las superclases por ser públicos. A través de los métodos get puedes acceder a los atributos.
En principio no tendrás acceso a los atributos por ser private. Pero si lo deseas, puedes declararlos como protected. Este modificador de acceso permite que las subclases conozcan los atributos de las superclases.
Cuando te refieres a que al aplicar la polimorfia no puedes acceder... : puedes acceder a todo lo que sea común (definido en las superclases). Si quieres acceder a métodos propios de una subclase, necesitarás identificar el tipo exacto con el que estás trabajando usando instance of o de otras maneras.
Para saber cuándo aplicar clases abstractas mira el curso.
Sobre la diferencia entre clases abstractas e interfaces: todo se mueve en niveles de abstracción. El máximo nivel de abstracción viene dado por las interfaces. Una clase abstracta podemos verlo como un nivel intermedio de abstracción. Y una clase concreta es el nivel más bajo de abstracción. El manejo de estos conceptos es un poco confuso sobre todo cuando no se tiene experiencia trabajando con ellos. A medida que vayas realizando el diseño de programas usándolos posiblemente tú mismo irás viendo qué es lo más conveniente.
Se hace quizás un poco complicado hablar sobre conceptos, quizás poniéndote ejemplos o viendo el código creado por otras personas, al ser algo aplicado y práctico, también puede ayudar. Si pegas el código que has creado (para ello pulsa el botón # del foro y al aparecer las etiquetas [ code ] ... [ / code] e indicas dónde tienes los problemas podemos tratar de revisarlo de forma más práctica.
Saludos.