Java 获取一个类的某些对象并在另一个类中使用

Java 获取一个类的某些对象并在另一个类中使用,java,Java,我想在一个类中使用某个对象,在另一个类中使用,但我不能 例如: 第1类: 问题:我怎样才能在2班中使用1班的radious 第2类: public class calculateArea { private Value value; public double area() { return 3.14*radious*radious; } } 为这两个值创建getter,并在第二个类中访问它们 差不多 public double getRadious(

我想在一个类中使用某个对象,在另一个类中使用,但我不能 例如: 第1类:

问题:我怎样才能在2班中使用1班的radious

第2类:

public class calculateArea
{

    private Value value;
    public double area()
    {
    return 3.14*radious*radious;
    }
}

为这两个值创建getter,并在第二个类中访问它们

差不多

public double getRadious() {
    return this.radious;
}
public double getLenght() {
    return this.lenght;
}

为radious制作一个getter方法:

public double getRadious(){
  return radious;
}
在主要类别中:

Value v = new Value();
v.setRadious(2.5);/*Set the Radious value*/

public double area()
{
  return 3.14*v.getRadious()*v.getRadious();
 }

向类值添加getter

public class Value {

public double radious;
public double lenght;
public void setRadious(double radious) {
    this.radious = radious;
}
public void setLenght(double lenght) {
    this.lenght = lenght;
}
public double getLenght() {
    return this.lenght;
}
public double getRadious() {
    return this.radious;
}

}
创建类1的实例

public class calculateArea{

public Value;
calculateArea(){
value = new Value();
}

public double area(){
value.setRadious(2.34);//or set ACCORDINGLY
return 3.14 * value.radious * value.radious;
}
}

当使用OOP时,问问自己什么代码去了哪里,需要创建多少类? 对于您的场景,您可以使用聚合或组合,即在另一个类中声明一个类的对象,然后可以使用点表示法和getter setter方法调用所声明对象的方法。所以事情会是这样的

public class Value 
{       
        private double radious;
        private double lenght;

        public void setRadious(double radious) 
        {
            this.radious = radious;
        }
        public double getRadious() {
            return this.radious;
        }
        public double getLenght() {
            return this.lenght;
        }
        public void setLenght(double lenght)
        {
            this.lenght = lenght;
        }
}



Class # 2
public class calculateArea
{

    private Value value = new Value();

    public calculateArea(double rad) {
         value.setRadius(rad);
    }

    public double area()
    {
        return 3.14*value.getRadious()*value.getRadious();
    }
}

此外,您需要在使用radius之前设置它的值。

为值类声明getter和setter:

public class Value {
 private double radious;
 private double lenght;

 public Value(double radious, double length) {
   this.radious = radious;
   this.length = length;
 }

 public void setRadious(double radious) {
   this.radious = radious;
 }
 public void setLenght(double lenght) {
   this.lenght = lenght;
 }
 public double getRadious() {
  return this.radious;
 }
 public double getLength() {
  return this.length;
 }
}
使用一些变量实例化对象: 值=新值2.0,3.0

将构造函数添加到CalculateArea类:

public class calculateArea {

  private Value value;

  public calculateArea(Value value) {
    this.value = value;
  }

  public double area()
  {
     return 3.14*value.getRadious()*value.getRadious();
  }
}
举例说明:

calculateArea cArea=新的calculateAreavalue

并以主方式将结果打印到控制台:


System.out.printlncArea.area

添加getter,但是您还需要一个第一个类的实例。如果没有实例,那么使用这些getter不会有太大的问题。在这段代码中,语法和逻辑错误都很严重。您忘了提到为什么发布的代码无法编译。这不是一个好答案,错误在你的答案中反复出现。你不能这样调用value.setRadious。这充其量只是一个不完整的例子answer@Stultuske因此,请说明为什么不能像那样调用value.setRadious。因为它不在方法或块中。他们将如何设置它?您的代码不提供这样做的可能性
public class calculateArea {

  private Value value;

  public calculateArea(Value value) {
    this.value = value;
  }

  public double area()
  {
     return 3.14*value.getRadious()*value.getRadious();
  }
}