Создаем несколько объектов из одного класса
Создайте проект из формы, модуля и класса. На форму поместите кнопку. В окна кода введите такой текст:
Модуль:
Module Module1
Public Объект1 As New Класс
Public Объект2 As New Класс
End Module
Класс:
Public Class Класс
Public C As Integer = 10
Public Sub Процедура()
Объект1.C = 101
Объект2.C = 102
End Sub
End Class
Форма:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Debug.WriteLine(Объект1.C)
Debug.WriteLine(Объект2.C)
Объект1.C = 1
Объект2.C = 2
Debug.WriteLine(Объект1.C)
Debug.WriteLine(Объект2.C)
Объект1.Процедура()
Debug.WriteLine(Объект1.C)
Debug.WriteLine(Объект2.C)
End Sub
Запустите проект, нажмите кнопку, проект напечатает:
10
10
1
2
101
102
Мы видим, что модуль создает из класса Класс два объекта: Объект1 и Объект2. При создании они абсолютно одинаковы и размещаются рядышком в оперативной памяти, как два близнеца. Как выглядят они в оперативной памяти? Не нужно представлять себе, что каждый из них является копией программного текста из окна кода класса. Для нас важно знать, что в каждом объекте располагаются ячейки памяти под переменные, объявленные в классе. В нашем случае в каждом объекте располагается ячейка под переменную C.
В коде класса переменная C инициализируется значением 10, а это значит, что она станет такой в обоих объектах, что и подтверждают результаты выполнения первых двух строк процедуры Button1_Click.
После выполнения следующих двух строк процедуры объекты перестают быть близнецами. Теперь в ячейке C у первого объекта единица, а у второго – двойка, что и подтверждается печатью.
Объект может и сам изменять значения переменных как в себе, так и в своем братце. Убедитесь в этом, просмотрев процедуру в классе. Таким образом, родившись с одинаковой анатомией и характером, близнецы в процессе жизни могут менять прическу, а характер проявлять по-разному.