Curso Avanzado de Java SE

Curso Avanzado de Java SE

Anahí Salgado Díaz de la Vega

Anahí Salgado Díaz de la Vega

Clases Abstractas

2/40
Recursos
Transcripción

Aportes 46

Preguntas 8

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Este curso deben de renovarlo porque continua con el curso viejo de Java SE 2018 y no con el nuevo que sacaron de introducción a Java y Java orientado a objetos. Eso de Amazon viewer no es para nada práctico ya deben usar el IntelliJ Idea

Como que mejor comienzo por el curso de Java Orientado a Objetos jaja

UN PEQUEÑO REPASO DE ALGUNAS COSAS DEL CURSO ANTERIOR PARA REFRESCAR LA MEMORIA:

toString:
Información completa de un objeto, es decir, el valor de sus atributos

HERENCIA:
Esto es una de las bases de la reutilización de código, en lugar de copiar y pegar. Al heredar de una clase base heredaremos tanto los atributos como los métodos, mientras que los constructores son utilizados, pero no heredados.

POLIMORFISMO:
Se da en los métodos sobrescritos, muchas formas de definir un método.

MÉTODO CONSTRUCTOR:
Cuando se construye un objeto es necesario inicializar sus variables con valores coherentes, imaginemos un objeto de la clase Persona cuyo atributo color de pelo al nacer sea verde, un estado incorrecto tras construir el objeto persona. La solución en los lenguajes orientados a objetos es emplear los constructores. Un constructor es un método perteneciente a la clase que posee unas características especiales:

  1. Se llama igual que la clase.
    2.-No devuelve nada, ni siquiera void.
    3.-Pueden existir varios, pero siguiendo las reglas de la sobrecarga de funciones.
    4.-De entre los que existan, tan sólo uno se ejecutará al crear un objeto de la clase.

INTERFACES:
Empleadas para definir un comportamiento que posteriormente será implementado por distintas clases, que podrían no tener que ver entre sí, pero todas se comportan como los métodos declarados en la interfaz.

HACE FALTA MUCHO MÁS DEL CURSO ANTERIOR, PERO, ES SÓLO PARA ENTENDER BIEN EL CONCEPTO DE CLASES ABSTRACTAS

.

aqui el enlace de AMAZON VIEWeR

Me parece muy raro que tanto tiempo despues no se han actualizado los cursos

Clases Abstractas
En Java se dice que son clases abstractas aquellas clases base (superclases) de las que no se permite la creación de objetos. Para ello, se utiliza la palabra clave abstract.

Métodos Abstractos
En una clase abstracta es posible definir métodos abstractos, los cuales se caracterizan por el hecho de que no pueden ser implementados en la clase base. De ellos, solo se escribe su signatura en la superclase, y su funcionalidad –polimórfica– tiene que indicarse en las clases derivadas (subclases).

En java tenemos:

  • polimorfismo estático: Sobrecarga de metodos.

  • polimorfismo dinámico: Sobreescritura de metodos.

A Alguien más le dio errores al momento de implementar el proyecto anterior? Por que yo no he logrado hacer andar el import com.anncode.makereport.Report; por que me dice que no se puede resolver y cuando uso el mio, lo toma como diferente al que uso la Profesora… alguien más lo resolvio?

veamos si se puede avanzar sin ver el curso del 2018 😃

Wuao 🤯… Por ahí viene mucho que aprender 💪🏽

Ejemplo clase abstracta:

Las clases abstractas es como organizar el código de los mas global a lo mas especifico, en este caso un ejemplo seria

la clase figura en el cual puede contener triángulos, círculos,
Las clases especificas seria triángulos o circulo

Nunca habia utilizado esa clase de polimorfismo!

Hola que tal!

En el ejemplo de Triangulo extends Figura como esa clase no implementa el método abstracto de la clase padre automáticamente esta clase se convierte en abstracta. Por que para que una clase sea abstracta por lo menos un método tiene que ser abstracto. ¿Es esto correcto?

Ejemplo de código de implementacion

<package abstracts;

public abstract class Figura {

    abstract void dibujar();
}
>

Implementacion

</*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package abstracts;

/**
 *
 * @author wilso
 */
public class Circulo extends Figura {

    @Override
    void dibujar() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

}
>

Genial.

No puedo abrir AmazonViewer alguien me puede ayudar?

Bueno llegue hasta aqui y claramente no puedo seguir con este curso, pues esta desactualizado con el curso anterior: Java basico 2018 algo asi y yo estoy siguiendo los de ahora 2020. Ni modo, ire a hacer el curso viejo para seguir con este, pero deben actualizar cuanto antes.

No existe el término clases avanzadas, veremos entonces una extensión de lo que podemos hacer con las clases en Java.

En el curso anterior hablamos de Polimorfismo a nivel de herencia y aplicado a interfeces.

Interfaces:

A veces no es necesario implementar todos los métodos

Herencia:

No siempre queremos heredar todos los métodos de la clase padre. Tampoco es necesario hacer instancias de la clase padre.

Quien soluciona los detalles que le faltan de implementar a la herencia y las interfaces son las clases abstractas.

Clase abstracta:

  • No implementa todos los métodos.

  • No crearemos instancias de la clase padre.

  • Es otro nivel de polimorfismo

un curso de hace 5 años. 😦

Gente no se desanimen, no necesitan dar los cursos anteriores, con todo lo que saben ahora, simplemente pueden leer el codigo anterior y continuar esta clase, para uds será fázil

Una interfaz prácticamente es como si fuera una clase abstracta en la cual por defecto sus atributos son públicos, estáticos y finales, los métodos no estáticos son públicos y abstractos (podiendo quitar lo abstracto con la palabra reservada default para poder implementar la función), y donde el constructor esta vacío.

public abstract class Figura {

  public abstract double area();

}

Leyendo los comentarios me di cuenta que muchos tienen problema con seguir el curso usando Intellij IDEA. Les dejo mi repositorio allí se encuentra el código base para iniciar este curso usando este IDE.

https://github.com/IngJuanMaSuarez/AmazonViewer

Solo descargan o clonan el repositorio, abren Intellij IDEA, seleccionan la opción de “Open”, buscan la carpeta descargada y descomprimida y listo.

Cree un repositorio del código inicial de este curso:

https://github.com/JordyAI/java_avanzado_platzi/

Recuerden cambiar a rama Master, es la versión inicial.

Excelente explicación.

Muy bueno !

Hola… compañeros tengo un problema y es que sucede de que cuando yo descargo el proyecto de git me sale error con todos los System.out.print quien me puede ayudar por favor.

Muy bien excelente clase

La clases abstractas son aquellas clases que son declaradas de tal forma que no sea posible crear instancias de estas. Solo se utilizan como superclases en jeraquias de herencia.

El propósito de una clase abstracta es proporcionar una superclase apropiada, a partir de la cual puedan
heredar otras clases y, por ende, compartir un diseño común.

La forma de declarar una clase como abstracta es con la palabra reservada abstract

Excelente!!

muy buena explicación!!

Las clases abstracta: “son como una fusión entre las cosas que le faltan a la interfaz por implementar y a ala herencia por cubrir”.

Un método que sea obligatorio de implementar en una clase abstracta deberá definirse con la misma palabra reservada que la clase.

Ejemplo:

public abstract class Figura{
abstract void dibújate();
}

sesadas```

APUNTES DE CLASE:

CLASES ABSTRACTAS:
Una clase abstracta es una especie de fusión de interface y herencia que complementa lo que hace falta en ambas.

  • Se puede definir en una clase abstracta qué cosas o qué métodos sí son obligatorios de implementar y cuáles no.

  • No se pueden crear instancias de dicha clase

  • Todo el tiempo una clase abstracta va a ser una clase padre que puede heredar métodos (no es necesario heredar todos los métodos)

  • No es necesario heredar todos los métodos de una clase abstracta

  • Un método que sea obligatorio de implementar deberá tener la palabra “abstract”

@since

Especifique la versión del producto cuando el nombre de Java se agregó a la especificación de la API (si es diferente de la implementación). Por ejemplo, si un paquete, clase, interfaz o miembro se agregó a la plataforma Java 2, edición estándar, especificación de API en la versión 1.2, use: 

/** * @since 1.2 */

El doclet estándar de Javadoc muestra un subtítulo "Desde" con el argumento de cadena como texto. Este subtítulo aparece en el texto generado solo en el lugar correspondiente a donde aparece la etiqueta @since en los comentarios del documento de origen (la herramienta Javadoc no la prolifera en la jerarquía).

(La convención una vez fue "@since JDK1.2", pero debido a que esta es una especificación de la Plataforma Java, no particular al JDK o SDK de Oracle, hemos eliminado "JDK").

Cuando se introduce un paquete, especifique una etiqueta @since en su descripción del paquete y cada una de sus clases. (Técnicamente, no es necesario agregar etiquetas @since a cada clase, pero es nuestra convención, ya que permite una mayor visibilidad en el código fuente). En ausencia de etiquetas de reemplazo, el valor de la etiqueta @since se aplica a cada una de las clases del paquete y miembros.

Cuando se introduce una clase (o interfaz), especifique una etiqueta @since en su descripción de la clase y ninguna etiqueta @since en los miembros. Agregue una etiqueta @since solo a los miembros agregados en una versión posterior a la clase. Esto minimiza el número de etiquetas @since.

Si un miembro cambia de protegido a público en una versión posterior, la etiqueta @since no cambiará, aunque ahora cualquier persona que llama, no solo los subclasificadores, puede utilizarla. 

Donde puedo obtener el proyecto del que habla.

Pero @anncode, si le coloco abstract al método en la clase Triangulo, ¿Entonces la clase Triangulo sería abstracta?

GRacias

Muy buena clase instructora Anahí, para resumir una clase abstracta es aquella que no puede instanciarse y que no todos sus métodos tienen que implementarse, por lo cual es ideal para ser super clase o clase padre.
   
Para convertir una clase a clase abstracta tenemos que usar la palabra reservada abstract antes de class e igualmente para los métodos usar abstract antes del tipo de parámetro a regresar (void, int, String, entre otros.)

Eres la mejor miss

Tengo un problema al descargar el proyecto desde git https://es.stackoverflow.com/questions/381319/error-al-descargar-un-proyecto-desde-git a qui lo presento mas detalladamente agradecería alguna ayuda 😄

Buenos dias!!
Una consulta una clase abstracta necesariamente debe tener atributos y métodos? o se podría también declarar solo atributos en el caso de que esa clase no tenga ningún método?
Muchas gracias por sus respuestas!!

Gracias por los conceptos.
Podria ayudar esto.
Las clases abstractas representa un concepto génerico en una jerarquía de clases. Normarmente la clase abstracta no estan suficienmente definida para ser útil por sí misma. Puede contener una descripcion parcial que heredan todos sus descendientes en la jerarquía de clases. Sus hijos, que son más especificos, ellos llenan los vacíos.

Esto ya me gustó, un buen inicio. A aprender.