【发布时间】:2015-02-24 21:46:11
【问题描述】:
我正在学习面向对象的编程课程,但在理解如何构建一个让用户声明半径是什么的圆形对象时遇到了一些困难。
我创建了一个数据类,并在其中放入了我的实例变量、getter 和 setter 方法、构造函数,然后是基本的计算函数方法来计算给定半径的圆的面积和周长。 这是那个类:
package shapesoo;
public class CircleDataClass {
private double radius;
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public CircleDataClass(double radius) {
this.radius = radius;
}
public double getArea(){
return Math.PI * radius * radius;
}
public double getCircumference(){
return 2 * Math.PI * radius;
}
}
然后,我正在创建一个测试类,它使用给定的半径构建圆,并在我的 main 方法中创建新的圆对象:
CircleDataClass myCircle = new CircleDataClass(radius);
我没有在这个测试类的任何地方声明半径,所以这就是我收到运行时错误的原因。但我想要的是用户输入我在构造函数中拥有的那个半径参数的值,然后将该半径传递给这个圆形对象。我是否在我的主类中创建一个单独的方法来询问半径的值?我想我对 getters/setters/constructors 正在做什么以及如何将半径变量传递给不同的类感到困惑。
编辑:如果我把它放进去,我的数据类中的实例变量是否被使用了?
public static void main(String[] args) {
String shapeType = getShape();
if (shapeType.equalsIgnoreCase("Circle")){
String r = JOptionPane.showInputDialog("What is the radius: ");
double radius = Double.parseDouble(r);
CircleDataClass myCircle = new CircleDataClass(radius);
}
}
我知道如何在不使用面向对象原则的情况下做到这一点,并且我知道这对你们中的许多人来说似乎很简单,但我希望能提供任何帮助。
【问题讨论】:
-
基本思想是您需要有某种形式的用户输入,以便用户决定大小。您可以尝试从
System.in或 GUI 对话框中读取文本。 -
在您的编辑中:是的,使用了您的 circle 实例的
radius数据,它包含作为参数传递给构造函数的值的副本。
标签: java oop object constructor