I want to print the methods toString()
in this order
but my java classes are printing it to me in the following way and I know that the error is in the methods toString()
that are not being overwritten by the child classes. This is how they are printed in the code I posted in this question
public class Articulo implements Comparable<Articulo> {
protected String nombre;
protected double precio;
protected Unidad unidad;
public Articulo() {
}
public Articulo(String nombre, double precio, Unidad unidad) {
super();
this.nombre = nombre;
this.precio = precio;
this.unidad = unidad;
}
public void setUnidad(Unidad unidad) {
this.unidad = unidad;
}
public Unidad getUnidad() {
return unidad;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public double getPrecio() {
return precio;
}
public void setPrecio(double precio2) {
this.precio = precio2;
}
@Override
public int compareTo(Articulo o) {
if (getPrecio() < o.getPrecio()) {
return -1;
}
if (getPrecio() > o.getPrecio()) {
return 1;
}
return 0;
}
@Override
public String toString() {
NumberFormat us = NumberFormat.getCurrencyInstance(Locale.US);
return "Nombre: " + getNombre() + " /// " + " Precio: " + us.format(getPrecio())+ " /// " + getUnidad().toString();
}
}
public class Fruta extends Articulo {
public Fruta() {
}
public Fruta(String nombre,double precio,Unidad unidad) {
setNombre(nombre);
setPrecio(precio);
setUnidad(unidad);
}
@Override
public String toString() {
NumberFormat us = NumberFormat.getCurrencyInstance(Locale.US);
return "Nombre: " + getNombre() + " /// " +" Precio: " + us.format(getPrecio())+ " /// " + getUnidad().toString() ;
}
}
public class Cosmetico extends Articulo {
public Cosmetico() {
}
public Cosmetico(String nombre, double precio, Unidad unidad) {
setNombre(nombre);
setPrecio(precio);
setUnidad(unidad);
}
@Override
public String toString() {
NumberFormat us = NumberFormat.getCurrencyInstance(Locale.US);
return "Nombre: " + getNombre() + " /// " + getUnidad().toString() +"ml" +" /// " +" Precio: " + us.format(getPrecio());
}
}
public class Bebida extends Articulo {
public Bebida() {
}
public Bebida(String nombre, double precio, Unidad unidad) {
setNombre(nombre);
setPrecio(precio);
setUnidad(unidad);
}
@Override
public String toString() {
NumberFormat us = NumberFormat.getCurrencyInstance(Locale.US);
return "Nombre: " + getNombre() + " /// " + getUnidad().toString()+" /// " +" Precio: " + us.format(getPrecio());
}
}
public class ListaArticulos {
List<Articulo> lista = new ArrayList<Articulo>();
public ListaArticulos() {
}
public ListaArticulos(Articulo articulo) {
AgregarArticulo(articulo);
}
public void AgregarArticulo(Articulo articulo) {
lista.add(articulo);
}
public void imprimirArticulos() {
for (Articulo articulo : lista)
System.out.println(articulo.toString());
}
}
public enum Unidad {
KILO("unidad de venta: ","kilo"), LITRO("Litros:",1.5), ML("Contenido:",500);
private String unidad;
private String kilo;
private double cantidad;
private Unidad(String unidad, double cantidad) {
this.unidad = unidad;
this.cantidad = cantidad;
}
private Unidad(String unidad, String kilo) {
this.unidad = unidad;
this.kilo= kilo;
}
public String getUnidad() {
return unidad;
}
public String getKilo() {
return kilo;
}
public double getCantidad() {
return cantidad;
}
@Override
public String toString() {
return getUnidad() + "" + getCantidad() ;
}
}
public class Main {
public static void main(String[] args) {
Articulo a1 = new Articulo("Coca-cola Zero", 20,Unidad.LITRO);
Articulo a2 = new Articulo("Coca-cola", 18,Unidad.LITRO);
Articulo a3 = new Articulo("Shampoo Sedal",19,Unidad.ML);
Articulo a4 = new Articulo("Frutillas",64,Unidad.KILO);
ListaArticulos listaArticulos = new ListaArticulos();
listaArticulos.AgregarArticulo(a1);
listaArticulos.AgregarArticulo(a2);
listaArticulos.AgregarArticulo(a3);
listaArticulos.AgregarArticulo(a4);
listaArticulos.imprimirArticulos();
}
}