如何在A类(在B类中声明)中设置的C类中获取吸气剂的价值

时间:2018-12-26 06:14:15

标签: java

我有三个类,分别是Value设置类,B类,它同时创建了getter和setter方法,B类获得了值(在A类中设置)

因为我要在A类和C类中创建B类的新实例。我无法在C类中设置Cwhioch的值。

我要承认的是,我们需要将对C类实例的引用从A类传递到B类。

但是我不知道该怎么做。

我尝试使用此代码。我知道结果是不可能的。我不知道该怎么办。

public Class A {
    int X = 9;
    B b = new B();
    b.setValue(X);
}

public Class B {
    private float value = 0;
    public float getValue() {
        return value;
    }
    public void setValue(float value){
        this.value = value;
    }
}

public Class C {
    B b = new B();
    final float x = b.getValue();
}

我希望在C类中使用B类的getValue()方法时,能够通过setValue()方法获得在A类中放入的值

6 个答案:

答案 0 :(得分:0)

  1. 首先,A类和C类中的B类实例不同。
  2. 您在A类中没有任何吸气剂以获取B类字段值
  3. 您可以在C类中创建一个方法,并在A类中引用实例。

希望这对您有所帮助。

答案 1 :(得分:0)

您可以通过以下方式进行操作:

public class A {
    int X;
    B b;
    public A(int x, b b){
        this.b = b;
        this.b.setValue(X);
    }        
}

public class C {
    B b;
    public C(B b){
      this.b = b;
    }
    public float getX(){
       return b.getValue();
    }
}

现在,您将B类的相同引用传递给A类和C类,如下所示:

public static void main(String[] args){
  B b = new B();
  A a = new A(9,b);
  C c = new C(b);

  float x= c.getX();

}

答案 2 :(得分:0)

您可以通过在Class中添加公共静态属性来实现。
静态属性直接与该类相关联。即使不创建类的实例也可以调用它们,例如:ClassName.propertyName。

public Class B {
   public static float value = 0;
}

在A类内部,您可以这样设置B的float值:

public Class A {
   B.value = 9;
}

并获取值:

public Class C {
    final float x = B.value;
}

答案 3 :(得分:0)

每当使用“ new”关键字创建对象时,请记住您正在创建一个新对象,并为其分配了新的存储空间。 现在在类C中,当您创建新的对象B时,将为该实例b分配新的存储空间。 (此实例b与A类中的b指向的内存位置不同) 创建对象后,立即调用b.getValue(),它将仅为您提供默认值“ value”。

  

当我在C类中使用B类的getValue()方法时,我能够   通过setValue()方法放入A类的值

为了获取A中设置的值,您需要调用b的getValue()- 类A中的对象b (而不是C类中声明的对象b)

因此,您需要在C类中使用a.b.getValue()访问它。

答案 4 :(得分:0)

尝试一下!

在ClassA的构造函数中,传递ClassB的引用并设置值。

public class ClassA {   
int X=9;
ClassB b;
public ClassA(ClassB b){
    this.b = b;
    this.b.setValue(X);
}}

类似地,在ClassC的构造函数中,传递ClassB的引用并调用方法getValue()以检索由classA设置的值。

public class ClassC {
ClassB b;
public ClassC(ClassB b){
  this.b = b;
}
public float getX(){
   return b.getValue();
}}

B类具有setter和getter函数。在主函数中,为ClassB创建一个实例,并将相同的引用传递给ClassA和ClassC。

public class ClassB {
private float value = 0;
public float getValue() {
    return value;
}
public void setValue(float value){
    this.value = value;
}
public static void main(String[] args){
      ClassB b = new ClassB();
      ClassA a = new ClassA(b);
      ClassC c = new ClassC(b);
      float x= c.getX();
      System.out.println(x);
}}

答案 5 :(得分:0)

最后,我能解决我的问题,谢谢您的建议。

但是我实际上做到了。我将吸气剂和吸气剂设为静态。现在,我不需要再次创建引用来获取价值。

我的代码

public Class A {
    int X = 9;
    B b = new B();
    b.setValue(X);
}

public Class B {
    private static float value = 0;
    public static float getValue() {
        return value;
    }
    public void setValue(float value){
        B.value = value;
    }
}

public Class C {
    final float x = B.getValue();
}