Crea una cuenta o inicia sesión

¡Continúa aprendiendo sin ningún costo! Únete y comienza a potenciar tu carrera

Curso Avanzado de Java SE

Curso Avanzado de Java SE

Anahí Salgado Díaz de la Vega

Anahí Salgado Díaz de la Vega

Implementando clases abstractas al proyecto

3/40

Aportes 41

Preguntas 11

Ordenar por:

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

Les comparto un ejemplo:

public class MyClass {
    public static void main(String args[]) {
    
        //INSTANCIAS DE LAS CLASES
        Pikachu pikachu = new Pikachu("Pikachu");
        Charmander charmander = new Charmander("Charmander");
        
        pikachu.ataqueEspecial();
        charmander.ataqueEspecial();
        
    }
}

//CLASE ABSTRACTA POKEMON (PRIMER NIVEL)
abstract class Pokemon {
    public abstract void ataqueEspecial();
}

//CLASES ABSTRACTAS QUE HEREDAN DE POKEMON (SEGUNDO NIVEL)
abstract class Electrico extends Pokemon {
    public abstract void ataqueEspecial();
}

abstract class Fuego extends Pokemon {
    public abstract void ataqueEspecial();
}

//CLASES QUE HEREDAN DE ELECTRICO Y FUEGO (TERCER NIVEL)
class Pikachu extends Electrico {
    
    private String name;
    
    public Pikachu(String name) {
        this.name = name;
    }
    
    public void ataqueEspecial() {
        System.out.println(name + " usa Impact Trueno!!");
    }
}

class Charmander extends Fuego {
    
    private String name;
    
    public Charmander(String name) {
        this.name = name;
    }
    
    public void ataqueEspecial() {
        System.out.println(name + " usa Lanzallamas!!");
    }
}```

Hay muchas forma de abrir el proyecto, yo lo abrí con NetBeans IDE 8.2, Cree un proyecto java, y luego copie toda la carpeta y sub carpeta que se encuentra de src e importe el .jar que se necesitaba el cual mkfile.jar.

¿Por qué hay diferencias entre el código final del Curso Básico de Java SE y el del comienzo del Curso Avanzado?
¿Cómo es que, por ejemplo, cambió la forma de leer la respuesta del usuario en el menu?
En el final del Curso Básico había quedado así:

			// Leer Respuesta usuario
			Scanner sc = new Scanner(System.in);
			int response = Integer.valueOf(sc.nextLine());
			
			if(response == 0) {
				showMenu();
			}

En el inicio del Curso Avanzado aparece asi:

			// Leer Respuesta usuario
			int response = AmazonUtil.validateUserResponseMenu(0, movies.size());
						
			if(response == 0) {
				showMenu();
				break;
			}

Resulta confuso. 😦

Hola, para los que quiere iniciar este curso y vienen del básico del JAVA SE utilizando Intellij y tienen problemas con la carpeta makefile.jar, lo que deben hacer es lo siguiente:

  1. descargar el proyecto de git o de la clase.
  2. abrirlo desde intellij
  3. click derecho en proyecto
    4 click en module project setting
    5 Modules - dependencies
  4. chulear la carpeta .jar
  5. darle click y cambiar el path de la carpeta por la dirección de la que tienen en su pc
  6. aplicar y ya está

Creo que la mayor utilidad que se le puede dar a una clase abstracta es emplear los métodos declarados como abstractos dentro de los definidos, de esa forma se pueden realizar procesos que involucren dichos métodos abstractos sin importar que sean diferentes para cada hijo.

public abstract class RealizarOperacion {
	private int resultado;
	private int constante1;
	private int constante2;
	
	public abstract int operacion(int a, int b);

	public RealizarOperacion(int constante1, int constante2) {
		this.constante1 = constante1;
		this.constante2 = constante2;
	}

	public void mostrarResultado() {
		resultado = operacion( constante1, constante2);
		System.out.println(resultado);
	}

	publid int getResultado() {
		if ( resultado == null ) {
			resultado = operacion( constante1, constante2);
		}
		return resultado;
	}
}

public class Suma extends RealizarOperacion {
	public Suma (int constante1, int constante2){
		super(constante1, constante2);
	}

	@Override
	public int operacion(int a, int b) {
		return a + b;
	}
}

public class Resta extends RealizarOperacion {
	public Resta (int constante1, int constante2){
		super(constante1, constante2);
	}

	@Override
	public int operacion(int a, int b) {
		return a - b;
	}
}

Luego, en el main o donde lo quieras usar podrías hacer algo así:

Suma cincoYcinco = new Suma(5,5);
cincoYcinco.mostrarResultado();

Resta seisYseis = new Resta(6,6);
int respuestaResta = seisYseis.getResultado();
System.out.println(respuestaResta);

El ejemplo es muy básico y poco útil, pero espero haber logrado dar a entender la gran ventaja e importancia de estas clases abstractas.

Hola buenas noches tengo un problema cuando descargo el archivo de GitHub no se puede abrir en NetBeans 11.3 any idea?

Habrá algún problema si descargo el código de Anncode (que fue hecho en eclipse) y yo trabajé con Netbeans?

pude importar el proyecto para intellij idea, si alguien necesita ayuda con eso mandeme msj.

Las clases abstractas solucionan las limitaciones de la herencia y las interfaces.

Los recursos de la clase estan puestos en Binario y no en texto plano.

Bueno iré aprendiendo, pero me gusta mucho cómo Anahí explica.

Excelente Clase, muy claro con las clases abstractas

Genial 💪🏽

Chicos estoy haciendo el curso con el IDE net beans, al importar el proyecto me sale " no netbeans project added " Alguien sabe como importarlo correctamente a net beans?

Esa estructura de paquetes no se ve en el curso Básico de Java, parece no haber correlatividad entre ambos cursos alguien podría aclararme un poco por favor?

Qué buena explicación.
Gracias Anahí

Tengo una duda… Porque no define el metodo view() en la clase padre y luego las sobreescribe en las clases hijas, porque hay la necesidad de ponerlas abstractas?

Excelente clase la explicación muy buena

Estupendo, comenzamos a utilizar clases abstractas para hacer el código del proyecto más eficiente.

muy buena explicacionn

Interesante las Clases Abstractas.!!

excelente explicación!!!

Muy buena explicación.

El curso básico no esta disponible como se hace si pague por el curso y no lo puedo ver ?

Hola no encuentro el curso anterior donde se hizo el proyecto de amazon view alguien me podria pasar el link asi hago primero ese curso. Desde ya muchas gracias!

Para los que tienen problemas pasandolo a IntelliJ, simplemente creen un nuevo proyecto java se pasan las clases de la carpeta src y File/Project Structure / Modules /Dependencies/ adjuntan el JAR donde lo tengan, arreglan los imports del main y listo!

En mi forma de ver la utilidad de las clases abstractas son esos métodos sin implementacion,{cuerpo de declaracion} que no podría heredar de las interfaces, y que si quería hacer uso , tenia que inyectar mi interfaz y sobrescribir el método. Ahora, si mi Super clase hereda de la clase abstracta, esos metodos los puedo llamar tanto en mi Super clase como las demás Sub clases.

  • Utilidades:

  1. Refactorizar mi programa a nivel de código(métodos)
  2. Refactorizar mi programa a nivel de (clases) No necesito implementar una hoja de interfaz
  • Desventajas:

  1. Obligatorio tienes que implementar tus métodos abstractos en tu árbol de herencia
  2. No puedo hacer multiple herencia como en las interfaces

Ahora entiendo por que no hacerlo en la de IVisualizable!

wow aprendiendo demaciado 😃

he aprendido muchas cosas

Super 😃 gracias

Genial.

Que mal que hay que haber visto el curso Basico antes de comenzar este ya que tal curso ya no pertenece a la ruta de aprendizaje de Desarrollo con Java, es muy confuso para mi de esa manera.

intente por git pero medio muchos errores me fue mas facil desgar el zip y abrirlo importandolo

Quisiera que actualizaran los cursos con java 11 e ir pensando en java 17

hasta aquí es que yo entiendo java.

Exelente clase

Estoy usando JAVA peor en Netbeans, como lo puedo importar?

Tengan presente que tienen una version de JDK válida para este proyecto. Si no es el caso, en eclipse abren el proyecto al abrir la carpeta:
File -> Open from file system -> open AmazonViewer

Dan clic derecho en la carpeta y van a propiedades

cick en Java build path, libraries. borran la libreria presente y añaden la que tienen en su equipo

No comprendo en el curso básico no estábamos usando eclipse sino InteliJIdea y no era ese proyecto.