Skip to content

Interfaces vs clases  #4

@flbulgarelli

Description

@flbulgarelli

En Java, cuando quieras crear objetos polimórficos, vas a tener que declarar explícitamente que sus clases comparten una interfaz, y para esto vas a tener que utilizar la declaración interface.

Por ejemplo, en lugar de escribir esto:

class Estado{
	double precio(Prenda prenda);
}

class Nueva extends Estado{
	double precio(Prenda prenda) {
		return prenda.precioBase();
	}
}

class Promocion extends Estado{
	double valor;
	
	double precio(Prenda prenda){
		return prenda.precioBase() - valor;
	}
}

Vas a tener que escribir esto:

interface Estado{
	double precio(Prenda prenda);
}

class Nueva implements Estado{ //notá que ahora dice implements
	double precio(Prenda prenda) {
		return prenda.precioBase();
	}
}

class Promocion implements Estado{
	double valor;
	
	double precio(Prenda prenda){
		return prenda.precioBase() - valor;
	}
}

Si no, vas a estar declarando a Estado como una clase, lo cual es una decisión muy fuerte porque la herencia es un arma de un sólo tiro (no podés heredar de más de una clase) y muy rígida (heredar implica "traerse" todo el comportamiento y el estado de tu clase padre y sus ancestros).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions