Поясняет редакция «Кода»:
— Я могу взять твою ручку? (Can I borrow your pen?)
— Нет, это моя личная ручка. (No, that's my private pen.)
— Но мы в одном классе. (But we are in the same class.)
Шутка играет с понятиями private и class, которые есть как в повседневной жизни, так и в объектно-ориентированном программировании.
У слова private несколько значений: личный, частный, приватный и конфиденциальный. В переводе диалога выше мы использовали значение «личный», как наиболее подходящее контексту.
В ООП private — это модификатор доступа. Если что-то объявлено как private
, например переменная, метод или объект, то это значит, что оно доступно только внутри своего класса и не может быть использовано напрямую за его пределами.
Same class можно понимать как «в одном школьном классе» в том смысле, что участники диалога учатся вместе. В то же время в программировании same class
означает, что два объекта принадлежат одному и тому же классу.
В ООП class — это структура или шаблон для создания объектов. Объекты одного и того же класса могут взаимодействовать друг с другом и иметь доступ к публичным и защищённым методам и полям друг друга. Но если метод или поле одного объекта определены как private
, другой объект не может иметь к ним доступа, даже если он принадлежит тому же классу.
Получается, что если подразумевать обычные значения слов private и same class, то второй собеседник мог бы всё-таки одолжить ручку первому — как-никак они одноклассники. Но в программистских значениях возражение But we are in the same class в ответ на No, that's my private pen ничего не значит — приватное на то и приватное, что доступа к этому ни у кого нет. Второй собеседник так и не поделится ручкой :-)