将变量传递给其他类或让变量由不同的类使用

时间:2017-10-04 19:54:30

标签: java

Image of Description

目的是让用户选择形状(正方形,三角形或圆形),然后输入边界长度。输入此信息后,我可以计算出他们选择的周长和面积。

问题是我不想为每个类的长度和区域创建新的变量,如果我不需要,并且宁愿将变量声明,然后如果可以的话就传递给类。

基本上我不想这样做,

class square {

  double bLength;
  double area;

}

class triangle {

  double bLength;
  double area;

}

class circle {

  double bLength;
  double area;

}

我可以在类之外声明它们,然后让类使用/继承它们或任何东西吗? 我必须为这样一个基本问题道歉,我对Java很新,我不能真正考虑这个问题。

2 个答案:

答案 0 :(得分:1)

经典的解决方案是使用继承:

class Shape {
    double bLength;
    double area;

    Shape(double bLength, double area) {
        this.bLength = bLength;
        this.area = area;
    }
}

class Square extends Shape {
    Square(double bLength, double area) {
        super(bLength, area);
    }
    // additional field, methods...
}

// same for the other shapes

答案 1 :(得分:0)

您可以通过以下方式使用继承来解决此问题:

声明一个名为Shape的类,所有其他类将从该类继承

public class Shape {

    public double length = 0;
    public abstract double GetPerimeter();
    public abstract double GetArea();

    public Shape(double length) {
        this.length = length;
    }
}

然后有你的专业课。例如。 :

public class Circle extends Shape {
    public Circle(double length) {
        super(length);
    }

    public double GetPerimeter() {
        // Implement the perimeter logic here
    }

    public double GetArea() {
        // Implement the area logic here
    }
}

为所有课程执行此操作。这样,您只有一个类中的变量,而其他所有变量都继承该变量。

修改

如果你想进一步优化(例如,你不想要函数调用开销),可能会像

那样
public class Shape {

    public double length = 0;
    public double perimeter= 0;
    public double area= 0;

    public Shape(double length, double perimeter, double area) {
        this.length = length;
        this.perimeter= perimeter;
        this.area = area;
    }
}

public class Circle extends Shape {
    public Circle(double length) {
        super(length, 2 * Math.PI * length, Math.PI * length * length);
    }
}