kostenloser Webspace werbefrei: lima-city


Optionaler Parametertyp

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    pixilab

    Kostenloser Webspace von pixilab

    pixilab hat kostenlosen Webspace.

    Hallo, ich möchte ein Objekt erstellen, welches entweder ein Float oder ein Date (oder Sonstiges) als Eingabeparameter akzeptiert. Glaube mich ganz schwach erinnern zu können, dass es da was mit Templates gab. Wie würde das mit Templates aussehen, wenn ich folgendes machen will?


    ...
    private Umsatz stundenumsatz; //  Umsatz(int stunde, float umsatz)
    private Umsatz tagesumsatz; // Umsatz(Date datum, float umsatz)
    ...
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ganz einfach: Du überlädts den Konstruktor deiner Klasse:

    class Umsatz {
        public Umsatz(int s,float u) {
           //objekterstellung mit integer und float parameter
        }
        public Umsatz(Date d,float u) {
           //objekterstellung mit date und float parameter
        }
    
        //weitere methoden
    }


    Keine Ahnung ob es da auch eine Templatealternative gibt, aber das sollte schon aussreichen. Java wählt so automatisch den passenden Konstruktor der Umsatz-Klasse und du hast genau das, was du brauchst.

    Beitrag zuletzt geändert: 21.4.2011 17:35:32 von alphara
  4. Ein Objekt wird vom Constructor gebaut. Dieser Constructor wird von dem Constructor der Klasse erweitert. Dummerweise haben beide die gleiche Bezeichnung.

    Der Constructor der Klasse hat den Namen der Klasse und beliebige Parameter, eben so, wie du sie brauchst. Du kannst mehrere Constructor-Methoden anlegen, alle mit unterschiedlichen Parameter. Zum Bauen des Objekts wird dann der Constructor verwendet, auf den die gegebenen Parameter passen.
  5. Also das funktioniert, nur ist noch nicht klar ersichtlich, wo bzw. wofür du es brauchst.
    Was ist denn der Eingabeparameter und warum sind da private Eigenschaften? Das verwirrt irgendwie.:confused:
    Aber ich nehme einfach mal an du meinst eine Klasse mit Konstruktor:
    class Umsatz<P( extends Class)> {
        public Umsatz( P date, float umsatz ) {} // den parameter- bzw. variablen namen kann man nicht anpassen
    }

    Allerdings kannst du das mit int vergessen, denn du kannst nur Objekte benutzen.
    Erstellt würde dass dann in etwa so.
    Umsatz<Integer> umsatz = new Umsatz<Integer>();

    Sollte der übergebene Parameter aber weiter verarbeitet werden rate ich eher zu überladenen Konstruktoren.

    PS: Das nennt sich in C++ Template, aber in Java spricht man meistens einfach von generischen Klassen/Methoden/...

    Beitrag zuletzt geändert: 21.4.2011 17:37:50 von reimann
  6. Autor dieses Themas

    pixilab

    Kostenloser Webspace von pixilab

    pixilab hat kostenlosen Webspace.

    Ja, diese generischen Klasse hab ich gesucht, danke :)
    Wusste nicht, dass das nur mit Objekten geht, schade. Dann hänge ich einige Konstruktoren dazu.
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!