Передача глобальной переменной объекту - PullRequest
0 голосов
/ 30 сентября 2019

Мой вопрос: почему мы должны передавать глобальные переменные (члены, имена) объекту, если мы хотим его использовать. Разве глобальная переменная не объявлена ​​для доступа всех объектов к ней?

public class Family {
    int members;
    String names;
    public Family(int members, string names) {
         this.members = members;
         this.names = names;    
    }
}

Ответы [ 2 ]

2 голосов
/ 30 сентября 2019

Как еще вы инициализируете переменные в объекте?

Позвольте мне попытаться объяснить вас таким образом. Предположим, что то, о чем вы спрашивали, было возможно тогда, если бы мы создали 100 различных объектов семейства и если быпеременные должны были иметь разные данные, как это будет возможно? Потому что изменение глобального поля повлияет на все объекты правильно.

Так что, в основном, когда вы создаете объект, вы либо инициализируете поля с помощью конструктора, как вы это делали в примере, либо вы можете использовать конструктор без аргументов и установитьзначения после того, как объект создан с использованием «Setters».

Для большего понимания при инициализации.

См .: https://www.google.com/amp/s/www.javaworld.com/article/3040564/java-101-class-and-object-initialization-in-java.amp.html

Надеюсь, это поможет.

0 голосов
/ 30 сентября 2019

Часть кода, упомянутая выше, на самом деле является определением class . Класс - это просто шаблон, который имеет переменные-члены и функции-члены, связанные с ним. Теперь Object является экземпляром класса, который получил некоторые значения для переменных, которые обычно получают и устанавливают с использованием методов получения и установки соответственно. Другие операции могут выполняться функциями-членами. Конструкторы используются для инициализации объекта.

public Family(int members, string names) {
     this.members = members;
     this.names = names;    
}

- это параматизированный конструктор , используемый для инициализации объекта с переданными параметрами. Это, очевидно, будетполезно при создании более 1 объекта класса, так как каждый объект будет иметь различные значения, связанные с ним. Для большей ясности:

public class Family {
int members;//member variable scope-class level
String names;//member variable scope-class level
public Family(int members, String names) {//int members,string names are parameters scope-constructor ,we can give any name to these two variables like int param_member,String param_names
     this.members = members;//LHS specifies the variable- member of the class and RHS specifies variable passed as parameter 
     this.names = names;  //LHS specifies the variable-names of the class and RHS specifies variable passed as parameter 
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...