Урок 7

Передача объектов в методы


Объекты допускается передавать методам в качестве параметров.

Пример 1. Применение объектов в качестве параметров

public class Test {
   private int a, b;

   public Test(int i, int j) {
        a = i;
        b = j;
    }

    // return true if o is equal to the invoking object
    boolean equals(Test o) {
        return o.a == a && o.b == b;
    }
}
public class PassOb {
    public static void main(String[] args) {
        Test ob1 = new Test(100, 22);
        Test ob2 = new Test(100, 22);
        Test ob3 = new Test(-1, -1);

        System.out.println("ob1 == ob2: " + ob1.equals(ob2));

        System.out.println("ob1 == ob3: " + ob1.equals(ob3));
    }
}

Объекты передаются по ссылке на них.

Пример 2. Применение объектов в качестве параметров

public class Test2 {
    int a, b;

    public Test2(int i, int j) {
        a = i;
        b = j;
    }

    // передача объекта
    void meth(Test2 o) {
        o.a *= 2;
        o.b /= 2;
    }

    // передача примитивных типов
    void meth(int a, int b) {
        a *= 2;
        b /= 2;
    }
}
public class PassObjReference {
    public static void main(String[] args) {
        Test2 ob = new Test2(15, 20);

        int x = 10;
        int y = 10;
        System.out.println("x and y before call: " + x + " " + y);
        ob.meth(x, y);
        System.out.println("x and y after call: " + x + " " + y);

        System.out.println("ob.a and ob.b before call: " + ob.a + " " + ob.b);
        ob.meth(ob);
        System.out.println("ob.a and ob.b after call: " + ob.a + " " + ob.b);
    }
}

Можно возвращать объекты из методов.

Пример 3. Возврат объектов из методов

public class Test3 {
    int a;

    public Test3(int i) {
        a = i;
    }

    public Test3 incrementByTen() {
        Test3 temp = new Test3(a + 10);
        return temp;
    }
}
public class ReturnObject {
    public static void main(String[] args) {
        Test3 ob1 = new Test3(2);
        Test3 ob2;

        ob2 = ob1.incrementByTen();
        System.out.println("ob1.a: " + ob1.a);
        System.out.println("ob2.a: " + ob2.a);

        ob2 = ob2.incrementByTen();
        System.out.println("ob2.a after second increase: "
                + ob2.a);
    }
}


0 comments
Leave your comment: