Re(9): Java-Dau-Anfängerproblem...
Geizhals » Forum » Programmierung » Java-Dau-Anfängerproblem... (63 Beiträge, 298 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
Java-Dau-Anfängerproblem...
11.07.2005, 13:50:53
Hi, Folks !

Habe mich in letzter Zeit wieder besseren Wissens in Java eingearbeitet...
Und hab' grad ein Micky-Maus-Prob:


public class Vater {

protected Vater() {}

public static boolean add ( int x ) {
return true;
}
}

public class Sohn extends Vater {

public static void main(String[] args) {
Sohn s = new Sohn();
Sohn.add(2);
}

public static int add ( int x ) {
return x;
}
}

---> Das ist nicht erlaubt - er motzt, weil die Methode add bei gleichen Parameter in Vater einen anderen Rückgabewert liefert als in Sohn...

Also in c++ wäre das erlaubt ;-).

Wozu braucht ma des ?

Also als Java-Laie dachte ich mir das wie folgt (und mußte daher schon viel umschreiben):
Es gibt eine Klasse Person - mit private-Gschichtln wie Zuname, Vorname, Gebdatum, ...
Person habe einen protected-Constructor - damit niemand selbst eine Person anlegen kann. Stattdessen gibt es eine Klassenmethode
> public static Person add(String Zuname, String Vorname, GregorianCal... GebDatum) - die zuerst mal nachsieht (in einem HashSet), ob es die Person schon gibt. wenn es sie gibt, liefert sie die bekannte Person zurück - wenn nicht, legt sie eine neue an und liefert die zurück. Grund: Auf diese Art will ich doppelte Personen vermeiden.

von Person gibt es eine abgeleitete Klasse Personal: sie hat dieselben Gschichtln wie Person - plus Job/Funktion, ...
Sie hat wieder einen protected Konstruktor - gleicher Grund wie bei Person.
Personal habe eine Reihe von Klassenmethoden "add"  -
so auch ein
> public static Personal add(String Zuname, String Vorname, GregorianCal... GebDatum)
---> Und genau da fetzt diese "$&%"!! Java-VM - eben wegen dem Rückgabewert von add().

Mir ist das ja komplett unklar...
Erstens sprech' ich hier von Klassenmethoden - also nix mit VMT. Irgendeine ominöse Forderung, warum das verboten sei in sauberen Design will noch nicht in meinen kleinen Schädel.
Zweitens ist mir der Workaround unklar...
Person::add() private machen nutzt auch nix - wieso net ???
Drittens scheint ein Object zurückliefern zwar als möglich aber bescheiden - denn jeder Aufrufende muß dann casten bzw. ein instanceOf scheint problematisch...
EDIT:
Viertens bin ich jetzt auf ein addPerson(), addPersonal(), ... ausgewichen - nur das ist ja auch besch*en... denn wozu sollte jede Klasse dann Trilliarden vererbter Methoden mitführen müssen ?

Ach ja, das bequeme Äquivalent in C++, das funktioniert:
class vater {
        public:
        static int add(int x);
};

int vater::add(int x)
{
        return 2;
}

class sohn: public vater
{
        public:
        static float add(int x);
};

float sohn::add(int x)
{
        return 2.3f;
}

int main() {
        sohn *s = new sohn();
        float f = s->add(2);
}



So oder so - ich denke wahrscheinlich zu C++-lastig...
wie macht man das sauber in Java ? Und /was/ ist der Hintergedanke von dieser IMHO stupiden, sinnlosen Limitierung ???

cu
ein frustrierter gepeinigter

11.07.2005, 14:10 Uhr - Editiert von gepeinigter_aon_neukunde, alte Version: hier
Antworten PM Alle Chronologisch
 
Melden nicht möglich
.  Re: Java-Dau-Anfängerproblem...  (Frankster am 11.07.2005, 14:07:47)
...  Re(3): Java-Dau-Anfängerproblem...  (Frankster am 11.07.2005, 14:19:36)
.....  Re(5): Java-Dau-Anfängerproblem...  (Frankster am 11.07.2005, 15:06:11)
.  Re: Java-Dau-Anfängerproblem...  (DeaconFrost am 11.07.2005, 17:13:42)
...  Re(3): Java-Dau-Anfängerproblem...  (DeaconFrost am 12.07.2005, 12:09:04)
.....  Re(5): Java-Dau-Anfängerproblem...  (DeaconFrost am 12.07.2005, 13:29:44)
.......  Re(7): Java-Dau-Anfängerproblem...  (DeaconFrost am 12.07.2005, 14:28:09)
.........
Re(9): Java-Dau-Anfängerproblem...
12.07.2005, 15:11:21
Ich denke, eine endgültige Entscheidung für oder wider Makros kann es nicht geben. Bei korrekter Anwendung haben sie schon was für sich. Klar. In jedem Fall gibt es sie in Java nicht. Unbegründet ist das, wie schon gesagt, auch nicht.

Nun, ich sage nicht das ich besonders gerne in Notepad entwickelt habe. Allein die ständigen Compilefehler *grummel*. Es erfordert enorm viel Disziplin und ist manchmal eine ziemliche Qual. Ich wollte nur sagen, dass es geht. Eclipse ist mir im Übrigen deutlich lieber. Sofort alle Schwachstellen am Schirm (im Hintergrund wird ständig übersetzt), Code Completion, Syntax Highlighting... Aaaah. Wie schön ist doch so eine IDE :-)
Ich bin im Übrigen kein Masochist, sondern beim Programmieren sehr faul. Motto: Muss ich das wirklich selber implementieren? *gg*

"Da hab' ich mich schlecht ausgedrückt..."

Denke ich nicht. Ich wollte dir nur ganz deutlich machen, dass final kein Instrument zur Optimierung ist. Es wäre ja schlechtes Design, wenn ich final nur deswegen schreibe, damit das Programm schneller wird. Es genauso schlechtes Design, es zu vergessen, obwohl es notwendig wäre UND das kostet auch noch (möglicherweise) Performance. Das ist alles. Ich denke, die Drohung mit der Performance-Keule wird nur deshalb ausgepackt, damit man es nicht vergisst. Aber das ist nur meine Meinung.

Deinem letzten Absatz stimme ich voll zu. Ich möchte nur noch anmerken, dass sich hinter dem Begriff Java ja vielerlei verschiedene Dinge verbergen. Deshalb kommt es wahrscheinlich zu so vielen (falschen) Gemeinplätzen und Missverständnissen.

Die reine Sprache Java ist syntaktisch äußerst einfach gehalten. Die Java Language Specification ist sicher viel dünner als die entsprechende Syntax-Beschreibung der Sprache C++.

Die Designprinzipien und Patterns, die hinter dem Konzept Java und der Java Bibliothek stehen sind äußert kompliziert. Außerdem hat die Java-Klassenbibliothek mittlerweile einen Umfang erreicht, der eben nicht mal in 5 Minuten zu überblicken ist.

Und der "Nachteil" bei Java ist sicherlich, dass diese Designprinzipien forciert werden. Man ist ja faktisch gezwungen sich mit gutem Design zu beschäftigen, sonst hüpft man mit Java nicht weit.

Also weiterhin viel Glück! ;-)

Antworten PM Alle Chronologisch Zum Vorgänger
 
Melden nicht möglich
.  Re: Java-Dau-Anfängerproblem...  (adhoc am 13.07.2005, 12:03:34)
...  Re(3): Java-Dau-Anfängerproblem...  (adhoc am 13.07.2005, 13:31:54)
...  Re(3): Java-Dau-Anfängerproblem...  (adhoc am 13.07.2005, 13:40:48)
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung