Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Delphi <> Java : static class (https://www.delphipraxis.net/95666-delphi-java-static-class.html)

Bomberbb 11. Jul 2007 09:24


Delphi <> Java : static class
 
Hallo,
ich lerne z.Zt. Java und oop. Ich würde gerne ein wenig erlerntes nun auch in Delphiprogrammen unterbringen.

Ich würde nun gerne die Variablen als Objekt defnieren, so dass ich z.B.
Methoden wie

MyString.ConvertFromInt(10);

definieren und aufrufen kann. Bei java gibt es nun das schlüsselwort 'static', so dass auf Objekte der Klasse auch ohne vorheriges Erzeugen (new) zugegriffen werden kann. Gibt es in Delphi(5) etwas ähnliches oder muss ich immer mit 'MyString.create' und 'MyString.free' arbeiten.

Gruß

BomberBB

mkinzler 11. Jul 2007 09:26

Re: Delphi <> Java : static class
 
Es gibt zwar keine statiische Klassen aber statische Methoden, welche in Delphi Klassenmethoden heißen.

Die Muhkuh 11. Jul 2007 09:41

Re: Delphi <> Java : static class
 
Hi Bomberbb,

Delphi-Quellcode:
type
  TClass = class(TObject)
  public
    class function GetSomething: String;
  end;

class function TClass.Getsomething: String;
begin
  Result := 'Something';
end;

// ......

ShowMessage(TClass.GetSomething);
so kannst du es direkt aufrufen, ohne erst mit TClass.Create bzw. .Free zu arbeiten.

Bomberbb 11. Jul 2007 11:01

Re: Delphi <> Java : static class
 
Nun, wenn ich nur Methoden aufrufe hat das bei mir auch schon funktioniert.
Wie aber bekomme ich das auch mit Attributen hin.

Habe mit das so gedacht...
Delphi-Quellcode:
type
  TClass = class(TObject)
  private
    value :String;
  public
    class function GetSomething: String;
  end;

class function TClass.Getsomething: String;
begin
  Result := 'GetsomeThing';
end;

// ......
var
  test: TClass;
Begin
  ShowMessage(test.GetSomething);
  test.value:=5; //hier kommt ohne Create die Zugriffsverletzung

jbg 11. Jul 2007 11:28

Re: Delphi <> Java : static class
 
Klassen-Eigenschaften/Variablen/Konstanten gibt es erst ab Delphi 2006.

3_of_8 11. Jul 2007 12:09

Re: Delphi <> Java : static class
 
...du kannst die Variablen allerdings in einen globalen Record auslagern, was dann ungefähr so ähnlich ist wie eine Klassenvariable. (zumindest so ähnlich aussieht. ;) )

Bomberbb 11. Jul 2007 13:10

Re: Delphi <> Java : static class
 
@ 3_of_8
Mir gehts im wesentlichen um die Vererbung, die bei Rekords ja nicht gegeben ist.

@jbg wie sähe das denn aus unter 2006: bin eh am überlegen, ob ich mir Turbodelphi kaufe.

mkinzler 11. Jul 2007 13:31

Re: Delphi <> Java : static class
 
Zitat:

wie sähe das denn aus unter 2006:
Win unter #2+#3 beschrieben

Oxmyx 11. Jul 2007 13:54

Re: Delphi <> Java : static class
 
Man kann eine Klasse in Java zwar als static deklarieren, allerdings hat dies einen anderen Effekt: Dadurch wird eine verschachtelte Klasse zu einer Top-Level-Klasse erhoben.

jbg 11. Jul 2007 17:11

Re: Delphi <> Java : static class
 
Zitat:

Zitat von Bomberbb
@jbg wie sähe das denn aus unter 2006: bin eh am überlegen, ob ich mir Turbodelphi kaufe.

Delphi-Quellcode:
type
  TTest = class(TObject)
  private class var
    FMyProp: Integer;
    FMySecondProp: string;
  public
    class function DoSomething: Integer; static; { eine echte statische Methode ohne versteckten Self: TClass Parameter }
    class property MyProp: Integer read FMyProp write FMyProp;
    class property MySecondProp: string read FMySeondProp write FMySecondProp;
  end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:51 Uhr.
Seite 1 von 2  1 2      

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