0

我想知道为什么我必须处理两种类型的参数;构造函数的参数和方法的参数。例如,我有一个简单的类,它添加了两个数字

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>
4

4 回答 4

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());
    }
}
于 2013-05-26T13:56:33.793 回答
1

使用this关键词:

public int add(){
    return this.x + this.y + this.z;
}

您也可以在非静态方法中使用this关键字。

关于您的编辑: add是类的函数(而不是成员),Kalc因此您只能将其作为函数调用:

System.out.println(k.add());
于 2013-05-26T13:53:40.907 回答
0

我认为您需要打印:

System.out.println(k.add());

代替 :

System.out.println(k.add);

在第二种情况下,编译器显示k.addadd变量,但在第一种情况下add(),编译器显示add()为您在 Kalc 类中定义的函数

于 2013-05-26T14:03:16.383 回答
0

什么是新对象?

您已经实例化了具有规定值的对象。如果你想用实例方法添加它们,试试这个

return this.x + this.y + this.z;
于 2013-05-26T13:56:10.230 回答