Cómo utilizar el polimorfismo para hacer la lista con los diferentes tipos en Java?

Alireza Bideli :

Tengo 3 clases círculo, rectángulo y cuadrados

Quiero obtener los datos necesarios para cada una de las clases, y por encima de las creo por el usuario.

Esto significa que el usuario puede hacer lo que quiere nunca, por ejemplo 3 círculos , 2 rectángulos y 7 cuadrados . El número de formas que depende del usuario.

Entonces quiero guardarlos en una lista de unidades y llamar a mis clases de métodos, que son calculateArea y calculatePerimeter y mostrar perímetro y el área de ellos con su nombre.

¿Cómo puedo hacerlo?

Estos son mis clases

Circulo

public class Cricle {

    private int radius;

    public Cricle(int radius) {
        this.radius = radius;
    }

    public  double calculateArea()
    {
        return (radius*radius)*Math.PI;
    }
    public double  calculatePerimeter()
    {
        return  (radius*2)*Math.PI;
    }
}

Rectángulo

public class Rectangle {

    private int width;
    private int height;

    public Rectangle(int width, int height) {
        this.width = width;
        this.height = height;
    }
    public int calculateArea() {
        return width*height;
    }

    public int calculatePrimeter() {
        return (width+height)*2;
    }
}

Cuadrado

public class Square {
    private int edge;


    public int calculateArea() {
        return edge*edge;
    }

    public int calculatePrimeter() {
        return edge*4;
    }
}
Swapnil Patil:

Se puede definir una interfaz y todas las clases de llevarlo a la práctica esta interfaz. Añadir todos los métodos comunes en una interfaz.

public interface Shapes {
   public double calculateArea();
   public double calculatePrimeter();
}

Ahora todas las clases de forma implementarán la interfaz anterior y proporcionar la implementación de métodos de interfaz. En su caso cambiar el tipo de retorno de todos sus métodos. se puede mantener el doble.

public class Circle implements Shapes{
    private int radius;

    public Circle (int radius) {
        this.radius = radius;
    }

    @Override
    public double calculateArea() {
        return (radius * radius) * Math.PI;
    }

    @Override
    public double calculatePrimeter() {
        return (radius * 2) * Math.PI;
    }
}

public class Rectangle implements Shapes{}
public class Square implements Shapes{}

A continuación, es necesario tener una lista

static List<Shapes> unitList = new ArrayList<Shapes>();

Obtener entradas del usuario y añadir a la lista anterior. Después, simplemente de bucle unitListy de llamada respectivos métodos

Para el cálculo de Área

for (Shapes shape : unitList)
    System.out.println("Area: " + shape.calculateArea());

Para el cálculo del perímetro

for (Shapes shape : unitList)
    System.out.println("Perimeter: " + shape.calculatePrimeter());

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=182403&siteId=1
Recomendado
Clasificación