Знакомство с классами и объектами. Использование объектов (окончание)

   
На этом шаге мы рассмотрим еще один пример использования объектов.

   
Еще один небольшой пример, связанный с использованием классов и объектов, представлен в примере ниже. Во многом он напоминает программу из предыдущего шага, но все же в нем есть и
существенные отличия.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace pr82_1
{
    // Описание класса: 
    class  MyClass {
        // Целочисленное поле: 
        public int number;
        // Метод для отображения значения поля: 
        public void show() {
            Console.WriteLine("Значение поля: " + number);
        }
    }

    // Класс с главным методом:
    class Program
    {
        static void Main()
        {
            // Объектные переменные:
            MyClass A, B;
            // Создание объекта:
            A = new MyClass();
            // Присваивание объектных переменных: 
            B = A;
            // Присваивание значения полю через первую 
            // объектную переменную:
            A.number = 123;
            // Вызов метода через вторую объектную переменную:
            B.show();
            // Присваивание значения полю через вторую 
            // объектную переменную:
            B.number = 321;
            // Вызов метода через первую объектную переменную:
            A.show();
            // Задержка:
            Console.ReadLine();
        }
    }
}

Архив проекта можно взять здесь.

   
Результат выполнения программы такой.


Рис.1. Результат выполнения программы

   
В данной программе мы немного упростили класс MyClass: теперь у класса всего одно целочисленное поле number. Метод show() при вызове отображает в консольном окне значение поля number объекта, из которого он вызывается.

   
В главном методе программы мы объявляем две объектные переменные А и В класса MyClass

 MyClass A, B;        .

   
Но объект создается только один: командой

  A = new MyClass();

ссылка на созданный объект записывается в переменную А. Затем командой

  В = А;

переменной В присваивается значение переменной А. Это важный момент: мы новый объект не создаем. Переменной В присваивается переменная А, которая уже
ссылается на ранее созданный объект. Что же происходит в этом случае? Чтобы получить ответ на вопрос, следует учесть, что фактическим значением переменной А является не объект, а ссылка на
объект. Мы можем эту ситуацию интерпретировать так, как если бы в переменную А был записан некий адрес объекта, на который ссылается переменная. Если так, то при выполнении
команды

  В = А;

в переменную В записывается адрес, который записан в переменную А. В итоге и переменная А, и переменная В содержат адрес одного и того же объекта. Это
означает, что обе переменные ссылаются на один и тот же объект. Поэтому когда командой

A.number = 123;

мы присваиваем значение полю number через переменную А, а затем вызываем метод show() через переменную В

  B.show();       ,

то в обоих случаях речь идет об одном и том же объекте. Аналогично, если изменить значение поля number с помощью команды

  B.number = 321;          , 

то при вызове метода show() через переменную А

  A.show();

в консольном окне отобразится новое значение поля.

   
На следующем шаге мы рассмотрим закрытые члены класса и перегрузку методов.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий