Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Prism Wie Greife ich auf Methode der Vor vor gänger klasse zu ? (https://www.delphipraxis.net/79291-wie-greife-ich-auf-methode-der-vor-vor-gaenger-klasse-zu.html)

negaH 20. Okt 2006 06:36

Re: Wie Greife ich auf Methode der Vor vor gänger klasse zu
 
dh. das dein Vorschlag

Delphi-Quellcode:
(self as <Klasse>).<Methode>
nicht mit virtuellen noch dynamischen Methoden funktioniert. Unabhängig von der Klasse nach der man castet wird denoch die Ontop Methode aufgerufen.

Zitat:

Zitat von Manuel
Der Upcast hilft da IMHO auch nichts. Sollte es doch funktionieren, habe ich wohl bei der Programmieren I-Vorlesung doch zu viel Tetris gespielt.

Du hast nicht zuviel Tetris gespielt.

Gruß Hagen

Sidorion 20. Okt 2006 08:29

Re: Wie Greife ich auf Methode der Vor vor gänger klasse zu
 
Zitat:

Leite B in C ab und will in C alles was b hat auser eben eines speziellen Features das Blöderweise in A ist und aber von B überschrieben wird.
dann mach Dir einen 'abstrakten Vorgänger' D, der alles, was B überschteibt überschreibt, ausser das Feature, das C haben will.
Dann erben B und C von D. B überschreibt das Feature, C nicht.

Corpsman 20. Okt 2006 13:58

Re: Wie Greife ich auf Methode der Vor vor gänger klasse zu
 
Ich selbst ging ja davon aus das es nicht geht.

Also ich habe mal Folgendes Gekodet :

Delphi-Quellcode:
Unit Unit1;

Interface

Uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

Type
  TForm1 = Class(TForm)
    Button1: TButton;
    Procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  End;

  a = Class
    Procedure d;
  End;

  b = Class(a)
    Procedure d;
  End;

  c = Class(b)
    Procedure d;
  End;

Var
  Form1: TForm1;

Implementation

{$R *.DFM}

Procedure a.d;
Begin
  showmessage('a');
End;

Procedure b.d;
Begin
  showmessage('b');
End;

Procedure c.d;
Begin
  (self As a).d;
End;

Procedure TForm1.Button1Click(Sender: TObject);
Var
  z: c;
Begin
  z := c.create;
  z.d;
  z.free;
End;

End.
Was passiert wenn ich auf den Button drücke ist ein Stack overflow => es geht nicht.

Muetze1 20. Okt 2006 14:14

Re: Wie Greife ich auf Methode der Vor vor gänger klasse zu
 
Hmm, du wolltest die Methoden auch wirklich verstecken bzw. reimplementieren anstatt zu überschreiben?

Corpsman 20. Okt 2006 14:23

Re: Wie Greife ich auf Methode der Vor vor gänger klasse zu
 
Ups

Delphi-Quellcode:
a = Class
    Procedure d; virtual;
  End;

  b = Class(a)
    Procedure d; override;
  End;

  c = Class(b)
    Procedure d; override;
  End;
war eigentlich so gemeint.

Der effeckt bleibt aber der selbe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz