任何人都请解释为什么我们在第一时间返回价值。 我的意思是方法更改实例变量返回的值?或者它会改变对象访问的实例变量的副本吗?
有什么好的链接可以帮助我理解从方法返回值的目的?
我有两个班级:
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 !!
需要对这两种方法进行哪些更改才能通过返回值进行分配?
答案 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)来获得该值。