Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

В чем различие родственных объектов в Delphy?

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> В чем различие родственных объектов в Delphy?
Имя
Сообщение << Старые топики   Новые топики >>
В чем различие родственных объектов в Delphy? - 2009-10-25 12:03:13.716666   
tredermlz

Сообщений: 3
Оценки: 0
Присоединился: 2009-10-25 10:03:59.160000
На пример у меня есть два объекта TStings и TStringList(то что происходит от TStings в курсе), вопрос заключается в том, стоит ли объявлять переменную как TStings а затем инициализировать как TStringList? Даст это ли какие преимущества?
Post #: 1
RE: В чем различие родственных объектов в Delphy? - 2009-10-25 12:18:05.580000   
Genco

Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
Ты сначала реши что тебе надо. Посмотри различия между этими классами (что добавили вTStringList) и оцени сам преимущества))
Post #: 2
RE: В чем различие родственных объектов в Delphy? - 2009-10-25 12:31:23.110000   
tredermlz

Сообщений: 3
Оценки: 0
Присоединился: 2009-10-25 10:03:59.160000
вот пример
var
f:TStrings;
begin
f:= TStringList.Create();
….
f.Free;
end;

я так и не понял зачем в коде так сделали, не проще сразу делать так:
var
f:TStringList;
begin
f:= TStringList.Create();

f.Free;
end;

если кто-то так пишет, то он наверно осмысленно это делает?
Post #: 3
RE: В чем различие родственных объектов в Delphy? - 2009-10-25 12:50:23.220000   
Lost_boy

Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
В Дэлфе не разбираюсь, могу быть не прав, НО:
разве весь смысл не в том, к чему относится f, по идее в двух случаях результат и цели немного разные…
в первый раз
f:TStrings;
а во второй раз
f:TStringList;
Post #: 4
RE: В чем различие родственных объектов в Delphy? - 2009-10-25 14:01:00.026666   
alexbozhko

Сообщений: 1024
Оценки: 0
Присоединился: 2005-11-24 13:35:34
Derive a class from TStrings to store and manipulate a list of strings. TStrings contains abstract or, in C++ terminology, pure virtual methods and should not be directly instantiated.

Т.е. TStrings нельзя использовать сам по себе

var ss: TStrings; begin try ss:=TStringList.Create; finally ss.Free; end; end;
Вот так правильно работать с ним

Вот так будет ошибка

var ss: TStrings; begin try ss:=TStrings.Create; finally ss.Free; end; [b][/b] end; TStringList = class(TStrings) – это класс наследник
А TStrings, по сути абстрактный класс, который нельзя использовать сам по себе
Post #: 5
RE: В чем различие родственных объектов в Delphy? - 2009-10-25 14:03:53.650000   
alexbozhko

Сообщений: 1024
Оценки: 0
Присоединился: 2005-11-24 13:35:34
quote:

ORIGINAL: tredermlz


я так и не понял зачем в коде так сделали, не проще сразу делать так:
var
f:TStringList;
begin
f:= TStringList.Create();

f.Free;
end;

если кто-то так пишет, то он наверно осмысленно это делает?

Затем же, зачем всегда делают абстрактные классы, и абстрактные методы

Post #: 6
RE: В чем различие родственных объектов в Delphy? - 2009-10-25 14:04:08.330000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
кто-нибудь, расскажите же ему про позднее связывание
Post #: 7
RE: В чем различие родственных объектов в Delphy? - 2009-10-26 13:27:10.836666   
tredermlz

Сообщений: 3
Оценки: 0
Присоединился: 2009-10-25 10:03:59.160000
Подскажите что это за позднее связывание? а то поисковики мне только сайты про сети и клиент-серверные приложения выдает..
Post #: 8
RE: В чем различие родственных объектов в Delphy? - 2009-10-26 14:20:43.600000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
http://ru.wikipedia.org/wiki/Полиморфизм_(программирование)

http://delphi.about.com/od/oopindelphi/a/delphi_oop13_2.htm
http://etutorials.org/Programming/mastering+delphi+7/Part+I+Foundations/Chapter+2+The+Delphi+Programming+Language/Late+Binding+and+Polymorphism/

коротко говоря, переменная со статическим типом TStrings может реально являтся (иметь динамический тип) как TStringList, так и любого другого потомка TStrings. определение того, какой именно динамический тип имеет переменная, происходит во время выполнения (потому и позднее связывание)
Post #: 9
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> В чем различие родственных объектов в Delphy?







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.