Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem OOP Intrface vs. Trieda

Mám objekt Objekt1, ktorý je inštanciou potomka triedy TStrings, tento potomk implementuje rozhranie IInterface1. Ďalej mám Objekt2 ktorý obsahuje dve overloadnuté metódy s názvom Add() jedna s parametrom typu TStrings druhá s prametrom typu IInterface1.

1.

Objekt2.Add(Item: TStrings);

2.

Objekt2.Add(Item: IInterface1);

Ktorá z týchto dvoch metód sa zavolá pri zápise?:

Objekt2.Add(Objekt1);
Předmět Autor Datum
Záleží čo voláš. Je rozdiel TStrings a dáky typ čo odkazuje na rozhranie. Preto si pozri čo ti to ro…
Len tak 04.11.2006 17:25
Len tak
No teraz som to testol a zistil som že trieda má pred rozhraním prednosť. Ja som predpokladal opak.
Zp 04.11.2006 17:43
Zp
Neviem, ci je to tak aj v Object Pascale, ale v Jave plati pravidlo, ze sa pouzije "most specific" m…
x22 04.11.2006 17:44
x22
jj to pretypovanie funguje aj v Delphi. poslední
Zp 04.11.2006 18:14
Zp

Záleží čo voláš. Je rozdiel TStrings a dáky typ čo odkazuje na rozhranie. Preto si pozri čo ti to rozhranie ponúka (pozri si jeho deklaráciu) a či má dáku náveznosť s typom TStrings. Ťažko takto napísať čo ti volá skôr.

A ešte ak máš overloadnuté 2 procedúry či funkcie, tak podľa mňa nebude volať jedna druhú (to je môj názor a zvlášť cez Interface)

Zpět do poradny Odpovědět na původní otázku Nahoru