如何在构造函数中调用方法?

时间:2014-10-19 08:39:09

标签: java class methods constructor

下面是我的类Range的代码的一部分,以及一个名为Tree的单独类中的构造函数。在这个构造函数中,我试图将类范围中的对象实例化到我的树类。当我尝试在树类中编译我的构造函数时,它说我试图调用的方法不能从静态上下文中引用。我是以正确的方式来做这件事的吗?我很确定这是一个非常简单的解决办法,但我无法弄明白。感谢

public class Range{
    int low, high;

    public Range(int plow, int phigh){
        low = plow;
        high = phigh;
    }

    public int getLow(){
        return low;
    }

    public int getHigh(){
        return high;
    }

public class Tree {
String name;

    public  Tree(String pname, int plow, int phigh) {
        name = pname;
        Range.getHigh() = phigh; <---where error message is
        Range.getLow() = plow;
    }
}

3 个答案:

答案 0 :(得分:2)

您的代码有两个问题:首先,getLow()getHigh()实例方法,而不是类方法。但是,您可以通过Range.getLow()Range.getHigh()来调用它们,这意味着您可以在课程Range上调用它们。这是不允许的。首先,您必须创建该类的实例:

ran = new Range(...)

然后在此实例上调用方法:

ran.getHigh();
ran.getLow();

您的代码的另一个问题是您正在尝试为方法调用分配值:

Range.getHigh() = phigh;

这在Java中是不可能的。 Java方法返回值,您无法分配值。也就是说,方法getHigh()getLow()意味着读取范围的高值和低值,而不是设置它们。在类Range的情况下,设置这些值只能通过调用构造函数来实现。

您可能想要做的是将Range类型的成员变量添加到Tree类,然后在构造函数中设置该变量:

ran = new Range(plow, phigh);

答案 1 :(得分:0)

您必须先创建一个范围对象,然后才能调用其方法

public  Tree(String pname, int plow, int phigh){
        name = pname;
        Range ran = new Range(phigh, plow);

    }

答案 2 :(得分:0)

使用setter设置变量

public class Range{
static int low, high;

public Range(int plow, int phigh){
    low = plow;
    high = phigh;
}

public static int getLow(){
    return low;
}

public static int getHigh(){
    return high;
}

public static void setLow(int low) {
    Range.low = low;
}

public static void setHigh(int high) {
    Range.high = high;
}

然后调用静态方法来设置值或获取

public class Tree{
String name;

public  Tree(String pname, int plow, int phigh){
    name = pname;
    Range.setHigh(phigh); //---where error message is
    Range.setLow(plow);
}

}