-1

我是面向对象编程的初学者,我想编写简单的代码来使用对象将两个数字相加。这是我的主要部分:

package main;
public class Main {
 test sum = new test();
 System.out.println("sum="+sum.c);
}

这是我的课:

package main;
public class test {

public int c;

public test() {
    int a = 1;
    int b = 1;
    int c = a + b;
}

public int c() {
    return c();
}
}

根据我的理解,它应该返回 2,但它返回 0。我做错了什么吗?谢谢。

4

3 回答 3

5

您正在c使用具有相同名称的局部变量来隐藏方法中的属性c。只需删除变量的声明:

public test() {
    int a = 1;
    int b = 1;
    c = a + b;
}

此外,在您的c()方法中,您应该返回变量,而不是方法:

public int c() {
    return c;
}
于 2013-04-29T02:01:51.257 回答
2

一些问题:

  • 您分配int c = a + b;但您正在重新声明变量,因此它会隐藏实例变量(仍然存在0),它应该是c = a + b
  • 该函数c()无用且相当危险,因为它自己调用它(无休止的递归StackOverflowException:)
  • 类应命名为大写(Testtest
于 2013-04-29T02:02:35.350 回答
1

尝试这个:

public class Test {

    int a = 1;
    int b = 1;
    int c = a + b;

    public int getC() {
        return c;
    }
}

和这个:

public class Main {
    public static void main(String[] args) {
         Test sum = new Test();
         System.out.println("Sum = " + sum.getC());
    }
}

您的问题是您的整数在一种方法中,这意味着它们仅在该方法中可用。此外,要打印出整数,您必须像调用带有 () 的方法一样调用它。

于 2013-04-29T02:16:22.923 回答