我是面向对象编程的初学者,我想编写简单的代码,使用对象将两个数字相加。这是我的主要部分:
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.我做错了什么?感谢。
答案 0 :(得分:5)
您使用具有相同名称c
的本地变量隐藏方法中的c
属性。只需删除变量的声明:
public test() {
int a = 1;
int b = 1;
c = a + b;
}
此外,在c()
方法中,您应该返回变量,而不是方法:
public int c() {
return c;
}
答案 1 :(得分:2)
一些问题:
int c = a + b;
,但是您要重新声明变量,以便隐藏实例变量(仍为0
),它应为c = a + b
c()
是无用的而且相当危险,因为它自己调用它(无限递归:StackOverflowException
)Test
而不是test
)答案 2 :(得分: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());
}
}
您的问题是您的整数是一种方法,这意味着它们仅在该方法中可用。同样要打印整数,你必须调用它,就像用()的方法调用方法一样。