powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Работа с объектами(понимание материала)
7 сообщений из 7, страница 1 из 1
Работа с объектами(понимание материала)
    #39347166
reddspv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Друзья, начал изучать java и столкнулся с вопросом.
Изучаю книгу Герберта Шилдта, там есть пример где мы можем в качестве аргументов передавать объекты.
Я не совсем понимаю как это происходит

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
class test2{
    int a, b;
    test2(int i, int j){
        a=i;
        b=j;
    }
    void meth(test2 o){
        o.a *=2;
        o.b /=2;
    }
}
public class test1
{
    public static void main (String args[]){
        test2 ob = new test2(15,20);
        test2 ob2 = new test2(15,20);
        System.out.println("ob.a="+ob.a+" ob.b="+ob.b);
        ob.meth(ob2);
        System.out.println("ob2.a="+ob2.a+" ob2.b="+ob2.b);
    }
}



test2 ob = new test2(15,20); - создается экземпляр класса test2
Вот как он выглядит?
То есть объект ob имеет переменные a=15 и b=20 , а метод meth никак не задействован, при создании объекта класса ob , под него просто память выделяется?

Создал я получается объект ob и конструктором будут инициализированы мои переменные a=15 и b=20 , далее вызываю метод ob.meth(ob2); получается ему передается ссылка на мой созданный объект ob2 и будут использоваться уже переменные этого объекта, а его метод, объекта ob2 получается никак не задействован.
Я вот не пойму как инициализация происходит, то есть я создал объект в котором есть переменные и метод, объект принимает значения конструктора и все. А методы получается служат просто для управления этими переменными и при создании объекта они никак не задействованы, при создании объекта инициализируются только переменные? В книге размыто написано, хочу понять
...
Рейтинг: 0 / 0
Работа с объектами(понимание материала)
    #39347218
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
reddspvСоздал я получается объект ob и конструктором будут инициализированы мои переменные a=15 и b=20 , далее вызываю метод ob.meth(ob2); получается ему передается ссылка на мой созданный объект ob2 и будут использоваться уже переменные этого объекта, а его метод, объекта ob2 получается никак не задействован.
Я вот не пойму как инициализация происходит, то есть я создал объект в котором есть переменные и метод, объект принимает значения конструктора и все. А методы получается служат просто для управления этими переменными и при создании объекта они никак не задействованы, при создании объекта инициализируются только переменные? В книге размыто написано, хочу понять
Всё верно. Данные отдельно - методы отдельно. Поля (не статические) это свойства объекта. При создании нового экземпляра "выделяется" память под все поля. Методы это свойства класса, они загружаются тогда когда загружается сам класс.
...
Рейтинг: 0 / 0
Работа с объектами(понимание материала)
    #39347292
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
reddspvА методы получается служат просто для управления этими переменными и при создании объекта они никак не задействованы, при создании объекта инициализируются только переменные? В книге размыто написано, хочу понять
Как вы себе представляете инициализацию метода? Выделение памяти под что? Под код?
Это и так выделяется при создании объекта класса конструктором.
При передаче объектов в качестве аргументов лучше использовать не сами объекты, а ссылки на них!

Данный же пример мне кажется некорректным.
Во-первых по умолчанию в С область видимости объектов определена как private.
Не уверен (но могу ошибаться) что объект test2 даст вам доступ к своим приватным переменным.
Может имеет смысл объявить в классе test2
Код: plaintext
1.
          friend class test1;


Во-вторых результат действия meth не проявляется никак, так как передан объект (фактически копия через стек)!
Это точно пример из Шилдта?
...
Рейтинг: 0 / 0
Работа с объектами(понимание материала)
    #39347297
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если уж на то пошло, то наверно правильнее так
Код: plaintext
1.
2.
3.
4.
5.
test2 meth(test2 o){
        o.a *=2;
        o.b /=2;
        return o;
    }
...
Рейтинг: 0 / 0
Работа с объектами(понимание материала)
    #39347314
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008Как вы себе представляете инициализацию метода? Выделение памяти под что? Под код?

Представьте себе код тоже надо где-то хранить. И байт-код и результаты JIT компиляции.

SQL2008Это и так выделяется при создании объекта класса конструктором.

"Это"? Объекта класса конструктором?

SQL2008При передаче объектов в качестве аргументов лучше использовать не сами объекты, а ссылки на них!

А что в Java уже можно и так и так?

SQL2008Во-первых по умолчанию в С область видимости объектов определена как private.

О как. А почему не в C#, например?

SQL2008Это точно пример из Шилдта?
А это автор одной единственной книги?
...
Рейтинг: 0 / 0
Работа с объектами(понимание материала)
    #39347316
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczSQL2008Во-первых по умолчанию в С область видимости объектов определена как private.

О как. А почему не в C#, например?
Сорри... лажанулся
Не понял о каком языке идёт речь.
Прошу все вышесказанное мной считать утренним бредом.
...
Рейтинг: 0 / 0
Работа с объектами(понимание материала)
    #39347648
reddspv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

спасибо за разъяснение
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Работа с объектами(понимание материала)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]