与返回类型的方法混淆

时间:2015-04-15 08:58:13

标签: java methods return-value

任何人都请解释为什么我们在第一时间返回价值。 我的意思是方法更改实例变量返回的值?或者它会改变对象访问的实例变量的副本吗?

有什么好的链接可以帮助我理解从方法返回值的目的?

我有两个班级:

Phone.java

class Phone{
    double weight; //instance variable

    void setWeight(double val) { // method talking double value but not returning
        weight = val;
    }
    double getWeight(){ //method returning double value
         return weight;
    }
}

Test.java

class Test{
    public static void main(String args [] ) {

    Phone phone = new Phone();


    double newWeight = p.getWeight();
    double newWeight3 = p.setWeight;

    int newWeight2 = p.getWeight();
    }
}

我的问题是:

  • 方法setWeight在其参数中讨论 double val ,但没有返回值,因此不会对实例变量权重进行更改课堂电话..对吗?

  • 方法getWeight将值返回到权重但我们没有将任何argunments传递给方法getWeight !!

  • 需要对这两种方法进行哪些更改才能通过返回值进行分配?

3 个答案:

答案 0 :(得分:1)

我们将值传递给setter方法,因为它们需要将某些值设置为其他字段(通常是类中的字段)。我们不期待任何回报。该方法仅用于设置值。

我们不会将值传递给getter,因为我们知道调用getter的实例,因此知道要获取什么值。由于我们需要一些返回值,我们返回值。

答案 1 :(得分:0)

它被称为封装,我们这样做只有类才能修改变量。

另一个选择是将重量公开,在哪种情况下我们不需要吸气剂和制定者,但那时该类无法控制自己的成员和行为。

http://en.wikipedia.org/wiki/Encapsulation_(object-oriented_programming)

答案 2 :(得分:0)

在您的示例中,我们可以像这样设置Phone phone的权重:

phone.setWeight(32.12)//or whatever value you want to pass

如果我们想要检索phone的值,我们可以这样做:

double tmp = phone.getWeight();

然后我们可以像任何变量那样用tmp做我们想要的。

请注意setWeight如何将其分配给任何变量。那是因为它的返回类型为void。

注意,在第二个值中,我们不会将任何内容传递给getWeight()方法参数。这是因为它不需要参数。因为它返回一个值,我们可以设置一个变量(tmp)来获得该值。