Страуструп Б. в [2] называет такие функции функциями-членами, часто их называют компонентными функциями, однако мы будем придерживаться более традиционной объектно-ориентированной терминологии и назовем их методами. Это название принято практически во всех объектно-ориентированных языках, в том числе в Java и С#. Методы класса имеют неограниченный доступ к полям класса независимо от того, закрыты поля или нет.
Однако функция, помещенная внутрь класса, тож!е становится недоступной извне: она невидима вне класса. Мы просто не сможем ее вызвать! Таким образом, совершенно очевидно, что надо иметь возможность явно управлять доступом к элементам класса (см. п. 11 в [1]). В С++ управление доступом осуществляется с помощью зарезервированных слов public и private. Ключевое слово public открывает доступ, а слово pr i vate — закрывает. После ключевого слова требуется поставить двоеточие (:).
Так как структура по определению (см. п. 9/4 в [1]) тоже является классом, то эти ключевые слова можно использовать и в структуре. Наша структура TMoney, поля которой закрыты, выглядит так:
struct TMoney
{ private: // закрываем доступ к полям
long double Summa; // денежная сумма
В классе ТМопеу можно открыть поля: class ТМопеу
{ public: // открываем доступ к полям
long double Summa; // денежная сумма
}
Такой класс практически не отличается от структуры. Если мы откроем поля в классе Person, то сможем инициализировать поля точно так же, как поля структуры OtherPerson. Естественно, можно будет обращаться к полям Kupaev.Summa и Kupaev.Fiо в любом месте программы.
И в классе, и в структуре разрешается написать столько слов public и private, сколько необходимо, и в том порядке, который требуется. Очередное слово действует до следующего. В принципе, если хотим, мы можем индивидуально объявлять каждый элемент класса либо открытым, либо закрытым. Открытая часть класса по традиции называется интерфейсом класса. |