目的是让用户选择形状(正方形,三角形或圆形),然后输入边界长度。输入此信息后,我可以计算出他们选择的周长和面积。
问题是我不想为每个类的长度和区域创建新的变量,如果我不需要,并且宁愿将变量声明,然后如果可以的话就传递给类。
基本上我不想这样做,
class square {
double bLength;
double area;
}
class triangle {
double bLength;
double area;
}
class circle {
double bLength;
double area;
}
我可以在类之外声明它们,然后让类使用/继承它们或任何东西吗? 我必须为这样一个基本问题道歉,我对Java很新,我不能真正考虑这个问题。
答案 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);
}
}