powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Виртуальные поля и inherited self'y
7 сообщений из 7, страница 1 из 1
Виртуальные поля и inherited self'y
    #39754565
фываенг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажите пожалуйста, есть ли в делфи виртуальные поля, и возможность вызвать inherited self'y, то есть записать как то так inherited self.Create;

То есть:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
BaseClass = class 
  a: array of string; virtual;
  constructor Create;
end;

ChildClass = class(BaseClass)
  a: array of string;
  constructor Create;
end;

ChildClass.Create;
begin
  a := ['lol', 'kek', 'apricot'];
  inherited self.Create; // с помощью этого вызова, 
end;

BaseClass.Create;
begin
  //  мы здесь используем a класса ChildClass 
end;
...
Рейтинг: 0 / 0
Виртуальные поля и inherited self'y
    #39754594
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фываенгесть ли в делфи виртуальные поля,Нет. А зачем такое нужно?
фываенгто есть записать как то так inherited self.Create;А чем не устроило
фываенг
Код: pascal
1.
inherited Create;

?
...
Рейтинг: 0 / 0
Виртуальные поля и inherited self'y
    #39754598
фываенг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

чтобы в конструкторе базового класса использовать поле производного класса
...
Рейтинг: 0 / 0
Виртуальные поля и inherited self'y
    #39754601
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фываенгчтобы в конструкторе базового класса использовать поле производного класса

Используй виртуальные функции для доступа к этому полю.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Виртуальные поля и inherited self'y
    #39754603
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наследование - это процесс, когда родитель НЕ ДОЛЖЕН знать о потомках
для изменения логики используется полиморфизм
и тогда _вызываемый_ виртуальный метод определяется классом _вызвавшего_ объекта
...
Рейтинг: 0 / 0
Виртуальные поля и inherited self'y
    #39755220
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виртуальные сеттер и геттер, в базовом классе пустые, и проперти на их основе.
...
Рейтинг: 0 / 0
Виртуальные поля и inherited self'y
    #39755249
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фываенг,

А в чём проблема-то?..

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
type

  BaseClass = class 
  protected
    a: array of string; 
  public
    constructor Create;
  end;

  ChildClass = class(BaseClass)
  public
    constructor Create;
  end;

constructor ChildClass.Create;
begin
  a := ['lol', 'kek', 'apricot']; // так не прокатит, но будем считать что это псевдокод
  inherited Create; // вызываем метод предка
end;

constructor BaseClass.Create;
begin
  // здесь у нас в a либо ничего, если BaseClass.Create вызвали напрямую, 
  // либо значения ['lol', 'kek', 'apricot'], если вызвали ChildClass.Create
end;
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Виртуальные поля и inherited self'y
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]