Java этот параметр - PullRequest
       18

Java этот параметр

0 голосов
/ 19 декабря 2011

Быстрый вопрос, я пытался самостоятельно найти удовлетворительный ответ.

Скажем, у меня есть 2 класса Object1 и Object2. Теперь я хочу, чтобы Object2 использовал ресурсы Object1, поэтому я делаю это

Object1 obj1;
    public Object2(Object1 o){
        obj1 = o;
    }

и в Object1 я делаю это

new Object2(this);

Дает ли это каждому Object2 Object1, или оно просто указывает на Object1, как и ожидалось?

Ответы [ 3 ]

1 голос
/ 19 декабря 2011

Это будет указывать на Object1, как и ожидалось. Это потому, что Java хранит объектные переменные как «ссылки» («указатели», если вам нравится думать в C), и, когда вы передаете эту ссылку по значению, вы даете функции ссылку на объекты. Существует хорошее базовое руководство по этому функциональность здесь . Надеюсь, это поможет.

1 голос
/ 19 декабря 2011

Он просто использует ссылку (точки) на Object1. Всякий раз, когда вы изменяете o в Object2 классе, вы также будете изменять оригинальный obj1 объект.

0 голосов
/ 19 декабря 2011

вы можете использовать отношения IS-A

Object2 расширяет Object1 {}

так что теперь Object2 может использовать ресурсы Object2, а также ресурсы Object1. предположим, что вы хотите наоборот, вы можете использовать отношения HAS-A

Object1 имеет ссылку на Object2, как это

Object1 {Object2 obj2; }

Object2 имеет ссылку на Object1, подобную этой

Object2 {Object1 obj1; }

...