如何建立一个" Circle"让用户确定半径的对象?

时间:2015-02-24 21:46:11

标签: java oop object constructor

我正在学习一个面向对象的编程类,我很难理解如何构建一个圆形对象,让用户声明半径是什么。

我创建了一个数据类,在其中我放置了我的实例变量,我的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);

我没有在此测试类中的任何位置声明radius,因此这就是我遇到运行时错误的原因。但我想要的是用户输入我在构造函数中的radius参数的值,然后将该半径传递给此圆对象。我在主类中创建一个单独的方法,询问半径的值吗?我想我对getter / setters / cosntructors正在做的事以及如何将radius变量传递给不同的类感到困惑。

编辑:如果我把它放入,我的数据类中的实例变量是否被使用?

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

    }
}

我知道如何在不使用面向对象的原则的情况下做到这一点,我知道这对你们许多人来说似乎都是基本的,但我会感谢你们的任何帮助。

1 个答案:

答案 0 :(得分:0)

  

我没有在此测试类中的任何位置声明radius,因此这就是我遇到运行时错误的原因。

好的,这是正常的

  

但我想要的是用户输入我在构造函数中的radius参数的值,然后将该半径传递给此圆对象。我在主类中创建一个单独的方法,询问半径的值吗?

是。基本上,您可以读取标准输入以供用户输入数字,然后使用它实例化圆圈。请参阅Scanner课程。

  

我认为我对getters / setters / cosntructors正在做的事以及如何将radius变量传递给不同的类感到困惑。

  • 构造函数用于创建和初始化类的实例。
  • getter(s)提供对实例属性的只读访问权限。在您的情况下,如果您想检查特定圆圈实例的半径,可以通过myCircle.getRadius()进行检查。
  • setter的作用是 mutate 一个实例,即更改内部属性。拥有setter可能不是一个好习惯,并且在需要更改属性时可以更好地创建新对象。这实际上取决于您的设计和背景。