Как составить список с разными типами в Java? - PullRequest
0 голосов
/ 26 апреля 2019

у меня 3 класса Круг, прямоугольник и квадрат

Я хочу дать необходимые данные для каждого из перечисленных классов и создать их пользователем, это означает, что пользователь может сделать 5 прямоугольников, 2 квадрата, 1 круг или 1 прямоугольник, 2 квадрата, 7 кругов или что-либо еще Пользователь создал номер создания, это зависит от пользователя.

Затем я хочу сохранить их в списке единиц и вызвать методы моих классов, которые calcArea и CalculatePerimeter , и показать их периметр и площадь с их имя.

Как я могу это сделать?

Thease мои занятия

круг

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;
    }
}

Прямоугольник

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;
    }
}

Площадь

public class Square {
    private int edge;


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

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

Ответы [ 4 ]

3 голосов
/ 26 апреля 2019

Вы можете определить интерфейс, и все ваши классы будут реализовывать этот интерфейс.Добавьте все общие методы в интерфейс.

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

Теперь все ваши классы фигур будут реализовывать вышеуказанный интерфейс и обеспечивать реализацию методов интерфейса.В вашем случае измените тип возврата всех ваших методов.Вы можете сохранить его в двойном размере.

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{}

Тогда вам нужно иметь один список

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

Получить входные данные от пользователя и добавить в приведенный выше список.Затем просто выполните цикл unitList и вызовите соответствующие методы

Для расчета площади

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

Для расчета периметра

for (Shapes shape : unitList)
    System.out.println("Perimeter: " + shape.calculatePrimeter());
3 голосов
/ 26 апреля 2019

Создание интерфейса позволяет вызвать TwoDimensionalShape и поместить в него общие методы.

public interface TwoDimensionalShape {
   double calculateArea();
   int calculatePrimeter();
}

И все классы реализуют это interface

public class Circle implements TwoDimensionalShape {
    //your code 
}

public class Rectangle implements TwoDimensionalShape {
    //your code 
}

public class Square implements TwoDimensionalShape {
    //your code 
}

И создайте List<TwoDimensionalShape> и поместите все эти фигуры в этот список.Как

List<TwoDimensionalShape> shapes= new ArrayList<TwoDimensionalShape>();
shapes.add(new Circle(5));
shapes.add(new Rectangle(4,3));
shapes.add(new Square(4));
for (TwoDimensionalShape shape : shapes) {
    System.out.println("Area = " + shape.calculateArea());
    System.out.println("Perimeter = " + shape.calculatePrimeter());
}
1 голос
/ 26 апреля 2019

Создать интерфейс для например. Shape.

public interface Shape {
    int calculateArea();
    int calculatePrimeter();
}

реализовать этот интерфейс во всех трех классах. список единиц будет List<Shape>, и затем вы можете вызвать CalculateArea () и вычисленияPrimeter () методы при итерации по списку

0 голосов
/ 26 апреля 2019

вы можете использовать концепцию наследования для этого.например, создайте класс Shape и затем наследуйте другие классы:

public abstract class Shape {
  public int calculateArea();
}
public class Circle extends Shape {}
public class Square extends Shape {}
public class Rectangle extends Shape {}

Затем вы можете использовать список Shape.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...