Hola a todos estoy estudiando java pero no llego a enteder bien lo que es una clase astracta y cual seria su uso practico
alguien me podria ayudar con algun ejemplo practico
se lo agradeceria mucho.
Saludos
| |||
Re: Que es una clase astracta?? Hola! Voy a ponerte el ejemplo que me pusieron a mi cuando me explicaron esto. Espero que te sirva de ayuda. Antes que nada debes saber que no se pueden instanciar objetos de una clase abstracta, es decir, no puedes hacer Código PHP: Código PHP: Tenemos la clase abstracta Figura que tiene un metodo llamado pintar(). Y tambien tenemos las clases Cuadrado, Triangulo y Circulo que heredan de la clase abstracta Figura y que tiene que implementar el metodo pintar(). Cada una implementara el metodo para que dibuje la figura correspondiente. La idea es que con la clase abstracta podemos hacer lo siguiente: Código PHP: Espero que te sirva y tengas una idea mas clara de lo que son las clases abstractas. Un saludo! |
| |||
Re: Que es una clase astracta?? Aunque CheBoy lo ha dejado bastante claro, me sumo a su respuesta y te digo que las clases abstractas sirven como una plantilla, es decir, siguiendo el ejemplo de CheBoy, tu sabes que sólo vas a trabajar con figuras, pero no puedes pintar una figura sin saber de que tipo es, por esto no puedes instanciar objetos de tipo figura. Pero en la clase figura puedes defirnir una serie de métodos que Circulo, Cuadrado y Triangulo heredaran y podrán implementar cada uno de una forma distinta (de ahí lo de polimrfismo, un método implementado de varias formas). De esta forma te abstraes de como se pinta un Circulo, o un Cuadrado te basta con saber que son un tipo de figura y que tienen un metodo pintar() que los pinta. Espero no haberte liado más. |
| |||
Re: Que es una clase astracta?? Con lo que habeis explicado, lo mismo da una clase abstracta que una interfaz, falta el detalle que diferencia una de otra, y es que una clase abstracta, aparte de servir de plantilla puede definir variables y código que son heredados por las clases que la extienden. Más que nada por que la gente suele encontrarse despues con el concepto de Interfaz y piensa "¿pero no es lo mismo?" S! |
| |||
Re: Que es una clase astracta?? Primero que todo, hola a todos! los segundo, GreenEyed tienes que o aprender a leer o aprender a escribir, por que es Clase ABSTRACTA y no astracta. CheBoy tiene razon en cuanto que una clase abstracta no puede o no tiene la capacidad de poder instanciarse, por el echo de que es abstracta. CheBoy no se si este codigo esta bien en php, por lo menos en java no se lleba Fugra fig; fig = new Cuadrado; fig.pintar(); fig = new Triangulo; fig.pintar(); fig = new Circulo; fig.pintar(); Lo que sé es que en java eso esta malo, no puede instanciar distintos objetos con el mismo nombre, en este caso seria de esta forma, se instancia o un Cuadrado o un Triangulo o un Circulo y al momento de instanciarse ellos toman al instante los metodos y atributos de la clase padre, el problema se ocaciona cuando tienes que crear una instacia de un objeto pero no sabes cual es, ese problema lo solucionas con patron de diseño que se llama factory. EJ: Cuadrado cuadrado = new Cuadrado(); cuadrado.pintar(); Abstracta viene de ABSTRACCION, abstraerse, llegar los mas arriba posible, escalabilidad, todos esos conceptos tienen que estar claros al momento de estudiar JAVA. Saludos a todos y espero que les ayude. OJO, la clase abstracta no tiene nada, pero nada que ver con la interface, asi que no confundir abstraccion con interface.....ok. |
| ||||
Re: Que es una clase astracta?? No está bien decir que la clase abstracta y la interfaz no tienen NADA que ver. Las dos se usan para dar herencia y comportamiento a clases subordinadas. Solo que las clases Abstractas poseen métodos y variables que serán parte de la herencia que reciba cada clase que la implemente. En cambio las Interfaces proveen un comportamiento, solo dan los nombres de los métodos (o no) que tienen. Esos métodos serán implementados por las clases que implementen a la interfase. |
| |||
Re: Que es una clase astracta?? Cita: Tu no solo tienes que aprender educación, de la que careces, si no que además tienes que aprender a leer, ya que el título del mensaje no lo escribí yo.Así que quien escribió "astracta" no fui yo. Y por cierto, ya puestos: .- Las frases se empiezan con mayúscula .- "los segundo" no concuerda en numero, supongo que sería "Lo segundo". .- El verbo "llevar" se escribe con "v", y no con "b". .- "Hecho" se escribe con h, ya que viene del verbo "hacer" ... Empezar insultando y presumiendo de lo que careces no creo que sea una buena forma de participar en un foro, pero cada uno es libre. S! PD: Ah, y como ya han mencionado, decir que el concepto de clase abstracta y de interfaz no tienen nada que ver es bastante desacertado.
__________________ Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana. |
| |||
Respuesta: Que es una clase astracta?? La verdad, zidboy, que te cubriste de gloria con tu primer mensaje en el foro. A parte de no fijarte quien escribe que, tener varias faltas graves de ortografia, y decir que una interface no tiene nada que ver con una clase abstracta, dices que un bloque de codigo esta mal, cuando no lo esta. En el codigo
Código:
no hay nada mal, excepto que falten los parentesis despues de la llamada a los constructores. No se estan instanciando distintas variables con el mismo nombre, se esta inicializando una variable varias veces, y eso si esta permitido, aunque he de reconocer que lo que tu dices de que no se puede poner el mismo nombre a distintas variables no se puede (aunque nadie lo haya dicho ni intentado). Fugra fig; fig = new Cuadrado; fig.pintar(); fig = new Triangulo; fig.pintar(); fig = new Circulo; fig.pintar(); |