访问给定对象的值

时间:2013-05-26 13:51:57

标签: java oop

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

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 个答案:

答案 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类中定义的函数