![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
volvo |
![]()
Сообщение
#21
|
Гость ![]() |
Цитата Могу ли я переопределить поле х в потомке unit unit_a; uses unit_a;, т.е., ты можешь воспользоваться тем, что private-члены класса, описанного в другом модуле, не видны в наследнике... |
Archon |
![]()
Сообщение
#22
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата Могу ли я переопределить поле х в потомке Давай представим, что это возможно:
typeВ итоге метод SaveX (а он наследуется) оказывается неработоспособным, так как в нем содержатся инструкции поместить значение типа Integer в поле типа Integer, а мы изменили тип поля на String. Вот хорошая причина, почему это нельзя делать. -------------------- Close the World...txeN eht nepO
|
volvo |
![]()
Сообщение
#23
|
Гость ![]() |
Цитата Вот хорошая причина, почему это нельзя делать. По этой же причине нельзя использовать перегрузку функций... Ты ее никогда не используешь? Напрасно, очень мощное средство...P.S. Проблема решается добавлением метода, заполняющего строку в класс TB. |
Client |
![]()
Сообщение
#24
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
Цитата перегрузку функций А что это такое?Добавлено через 3 мин. Цитата private-члены класса, описанного в другом модуле, не видны в наследнике... А в одном модуле они наследуются? (видимо да...) |
volvo |
![]()
Сообщение
#25
|
Гость ![]() |
Цитата А в одном модуле они наследуются? В одном модуле директивы private/protected не работают, они работают только для попыток обращения из другого модуля. То есть, если я сделаю так:type, то вроде бы незаконное (по меркам других языков программирования) обращение к полю Х (оно защищенное, то есть, недоступное ниоткуда, кроме методов класса и его потомков) проходит без ошибки. А вот если то же самое попробовать сделать из другого модуля (нижние 6 строк) - все будет работать, как полагается, в строке obj.X := 2; компилятор выдаст ошибку... Это, конечно, не то, к чему привыкаешь, программируя на С++, но вот в Паскале/Дельфи - так... Цитата А что это такое? Перегрузка функций - это из Object Pascal-я, описание функций/процедур с одинаковыми именами, но разными списками параметров. И пусть компилятор сам разбирается, какую процедуру с заданными мной параметрами надо вызывать... |
Archon |
![]()
Сообщение
#26
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата P.S. Проблема решается добавлением метода, заполняющего строку в класс TB. А если метод без параметров? Тогда надо уже не добавлять, а перекрывать существующий. Можно, конечно, заставлять программиста перегружать или перекрывать каждый метод, ставший неработоспособным, это как-то не по-Паскалевски. Вот в С++ я могу такое представить. ![]() -------------------- Close the World...txeN eht nepO
|
Client |
![]()
Сообщение
#27
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
Цитата Проблема решается добавлением метода, заполняющего строку в класс TB. Добавим новый метод, назовем по другому и все? Или что-то тут не так?И можно новую задачку попроще, для чайника ![]() P.S. Экзамен сдал на 5 ![]() |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 2:41 |