Java

Разве так можно связывать внешние переменные с переменными метода?

Class Вох {
douЫe width;
douЫe height;
douЫe depth;

douЫe volume
(
) {
return width * height * depth;
}

void setDim
(douЫe w, douЫe h, douЫe d) {
width = w;
height = h;
depth = d;
Myrzagul6 Kapysova
Myrzagul6 Kapysova
96 811
Конечно можно, обычная практика.
И вы их не связываете, те переменные которые вы передали с внешней стороны они существуют сами по себе, а в классе у вас своя копия значений. Т. е. изменив внешние переменные вы не поменяете таким образом значения в классе.

Я вам даже больше скажу. Вот так любят все писать да и сам тоже так пишу.
void setDim(double width, double height, double depth) {
this.width = width;
this.height = height;
this.depth = depth;
}
т. е. передавать такие же имена в параметрах метода как и внутри класса объявлены. Чтобы при вызове метода, чётко понимать какие параметры нужно передавать. По одной букве не всегда это понятно. Вы ведь не один пишите код, в компании много программистом и всегда нужно поддерживать чужой код.

Исключение состовляют кастомные объекты.
Например:
в классе Box у вас есть переменная Box2 box2 и метод
setBox2(Box2 box2) {
this.box2 = box2);
}
Вот так делать нельзя и именно в этом случаи вы связываете внешнюю переменные с переменной класса.
Присвоив их в такой манере, вы сможете изменить значения внутри Box2 извне класса Box, что очень плохо, поэтому нужно создавать клон объекта либо передавать значения, а из него уже создавать новый Box2 внутри Box. Чтобы объекты были развязаны между внутренним представлением и внешним.
Dark Forest
Dark Forest
3 619
Лучший ответ
Да, иначе зачем они нужны.
Они отличаются лишь тем, что глобальные видны во всех методах, а локальные - только в одном.
Артем Гриднев
Артем Гриднев
9 233