我必须创建两个类,我们将它们称为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主类中获取数据 有人可以解释我该怎么做吗? 谢谢。
答案 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
实例的c
和B
的值为555
和999
。
或者也许:
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()方法,您将获得结果。