如何从其他Java类中获取数据

时间:2018-06-21 10:41:15

标签: java eclipse

我必须创建两个类,我们将它们称为A和B。

public class A {

    double Number1;
    double Number2;

 A(double Number1, Number2){
        this.Number1=Number1;
        this.Number2=Number2;
}
}

现在我有一个空的主类,有人在其中输入他们的1号和2号

public static void main(String[] args) {
A game=new A(555, 999);
}

现在,我想创建另一个名为B的类,并且我希望将数字555和999转移/在B类中使用相同的值 像

public class B{
///double a= 555;
///double c= 777;

}

我需要这些运算符a和c从公共静态void主类中获取数据 有人可以解释我该怎么做吗? 谢谢。

4 个答案:

答案 0 :(得分:1)

一种方法是在A中添加一些get方法:

public double getNumber1() {
    return Number1;
}

public double getNumber2() {
    return Number2;
}

并将设置方法添加到B中:

public void setA(double a) {
    this.a = a;
}

public void setC(double c) {
    this.c = c;
}

然后在您的主类中实例化B

B b = new B();

然后设置值:

b.setA(game.getNumber1());
b.setC(game.getNumber2());

现在,您的a实例的cB的值为555999

或者也许:

public B(double a, double c) {
    this.a = a;
    this.c = c;
} 

并将值传递到构造函数中:

B b = new B(game.getNumber1(), game.getNumber2());

答案 1 :(得分:1)

OOP的一个基本原理是,我们在类上构建了具有某些属性的某些对象。这些类为应该使用其行为的对象“充当蓝图”。

正如我在评论中提到的那样,您可以创建一个构造函数,该构造函数将类A的对象作为参数:

public class B
{
  private double value1;
  private double value2;

  public B( A aObject )
  {
    value1 = aObject.getVal1();
    value2 = aObject.getVal2();
  }
  // rest of the class...
}

A类:

public class A
{

  private double val1;
  private double val2;

  public A( double val1, double val2 )
  {
    this.val1 = val1;
    this.val2 = val2;

  }

  public double getVal1()
  {
    return val1;
  }

  public double getVal2()
  {
    return val2;
  }
}

和主要方法:

public static void main( String[] args )
{
  A aObject = new A( 100, 100 );
  B bObject = new B( aObject );
}

这样做会使类A的对象独立存在,但是类B的对象总是需要另一个对象形式的“基础”,它们可以从中复制值。

也请少量阅读encapsulation

答案 2 :(得分:0)

您需要在类中使用getter方法来查询值。对于您的成员变量Number1和Number2。

以下是您的示例,请考虑大小写名称的更改:

public class A {
  // value of number 1
  // member variables should start lowercase
  // they should be private so they are not modified from the outside
  private double number1;

  // value of number 2
  private double number2;

  // constructor:
  public A(double number1, double number2) {
     // in a custom constructor you should 
     // alwas run the superconstructor at first:
     super();
     setNumber1(number1);
     setNumber2(number2);
  }

  // setter/getter for number 1:
  // search the internet for "camelcase" description
  // (lower/upper cases in method/member names)
  public void setNumber1(double theNumber) {
    this.number1 = theNumber;
  }

  public void getNumber1() {
    return this.number1;
  }

  // do the same for number 2
}

现在,您可以使用这些获取器来检索数据。以相同的方式构建B类,您将像这样进行操作:

public static void main (String[] args) {
  A a = new A(555, 666);
  B b = new B(a.getNumber1(), a.getNumber2());
}

不用说在此示例中,A类和B类没有区别,因此B类是胡说八道。但是,如果要使用的类具有不同的签名(成员变量,方法等),则这是一种正确的方法。

答案 3 :(得分:0)

您可以在B上扩展A类。下面的代码将为您提供帮助。

public class ClassA {

    double number1;
    double number2;

    public ClassA(double number1, double number2) {
        this.number1 = number1;
        this.number2 = number2;
    }

}

public class ClassB extends ClassA {

    public ClassB(double number1, double number2) {
        super(number1, number2);
    }

    public double getNumber1() {
        return number1;
    }

    public double getNumber2() {
        return number2;
    }

}

如果访问classB.getNumber1()方法,您将获得结果。