我想知道为什么我必须处理两种类型的参数;一个构造函数和一个方法的参数。例如我有这个简单的类添加两个数字
class Calc{
private int x = 6;
private int y;
private char z = 'z';
public int getx(){
return x;
}
public char selfrecur(){
return this.z;
}
public int add(int one,int two){
return one + two;
}
public static void main(String[] args) {
Calc gx = new Calc();
System.out.println(gx.x);
System.out.println(gx.add(44,3));
System.out.println(gx.selfrecur());
}
}
这有用,哇,不是那么好。现在,我有这个想法让构造函数提供参数,而函数的工作将是进行繁重的计算。例如在我的班级Kalc
class Kalc{
//** This example won't work **
private int x;
private int y;
private int z;
public Kalc(int v1,int v2,int v3){
this.x = v1;
this.y = v2;
this.z = v3;
}
public int add(){
return newObject.x + newObject.y + newObject.z;
//Gets the values of a new object and add them up
}
public int multiply(){
return newObject.x * newObject.y * newObject.z;
//Gets the values of a new object and multiply them
}
public static void main(String[] args) {
Kalc k = new Kalc(4,5,6);
System.out.println(k.add());
System.out.println(k.multiply());
}
}
我一直在这里http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html寻找线索,但到目前为止没有。这甚至可能吗?。
编辑
class Kalc{
private int x;
private int y;
private int z;
public Kalc(int v1,int v2,int v3){
this.x = v1;
this.y = v2;
this.z = v3;
}
public int add(){
return this.x + this.y + this.z;
}
public static void main(String[] args) {
Kalc k = new Kalc(4,5,6);
System.out.println(k.add);
}
}
错误
C:\ja>javac Kalc.java
Kalc.java:17: error: cannot find symbol
System.out.println(k.add);
^
symbol: variable add
location: variable k of type Kalc
1 error
C:\ja>
答案 0 :(得分:1)
使用this
关键字:
public int add(){
return this.x + this.y + this.z;
}
您也可以在非静态方法中使用this
关键字。
关于您的修改:
add
是类Kalc
的函数(以及不成员),因此您只能将其称为函数:
System.out.println(k.add());
答案 1 :(得分:1)
您可以执行以下操作
class Kalc{
private int x;
private int y;
private int z;
public Kalc(int v1,int v2,int v3)
{
this.x = v1;
this.y = v2;
this.z = v3;
}
public int add(){
return x+y+z;
}
public int multiply(){
return x*y*z;
}
public static void main(String[] args) {
Kalc k = new Kalc(4,5,6);
System.out.println(k.add());
System.out.println(k.multiply());
}
}
答案 2 :(得分:0)
什么是newObject?
您已实例化具有指定值的对象。如果要使用实例方法添加它们,请尝试使用
return this.x + this.y + this.z;
答案 3 :(得分:0)
我认为你需要打印:
System.out.println(k.add());
而不是:
System.out.println(k.add);
与第二种情况一样,编译器将k.add
显示为add
变量
但在第一种情况add()
中,编译器将add()
显示为您在Kalc类中定义的函数