В качестве аргумента метод может принимать любой тип, в том числе и объект. При передаче объекта методу как аргумента указывается класс объекта (тип объектной переменной).
class Base{ int a,b; void show(){ System.out.println(a + " : " + b); } } class Test{ void f(int x, int y){ x*=5; y/=2; System.out.println(x + " : " + y); } void f(Base obj){ obj.a*=5; obj.b/=2; System.out.println(obj.a + " : " + obj.b); } } class Demo{ public static void main(String[] args){ Base obj = new Base(); Test objFunc = new Test(); obj.a = 10; obj.b = 20; objFunc.f(obj.a, obj.b); obj.show(); // свойства a и b объекта не изменились objFunc.f(obj); obj.show(); // свойства a и b объекта изменились } }
где:
objFunc.f(obj.a, obj.b); - передача аргумента по значению.
objFunc.f(obj); - передача аргумента по ссылке.
В Java существует два способа перадачи аргументов методам: по значению и по ссылке. При передаче аргумента по значению в метод передается копия этого аргумента. Если аргумент передается по ссылке, в тело метода поступает ссылка на аргумент.