| ASP, PERL, CGI, C und alles andere Wolle ma net so sein. Obwohl Perl, ASP, C und TCL zu den minderwertigen Internet-Skriptsprachen zählen, dürfen ab sofort hierzu auch Fragen gestellt werden. ;) |
 |

12-06-2008, 00:18
|
|
BlackPerfect
Registrierter Benutzer
|
|
Registriert seit: Jun 2006
Ort: Dresden
Beiträge: 171
|
|
Java Anfänger
Hi Leute,
beschäftige mich seit einigen Tagen mit Java und ich verstehe das einfach nicht mit der Sichtbarkeit bei static.
Das habe ich aus nem online Tutorial:
Variablen und Methoden mit dem Attribut static sind nicht an die Existenz eines konkreten Objekts gebunden, sondern existieren vom Laden der Klasse bis zum Beenden des Programms. Das static-Attribut beeinflußt bei Instanzmerkmalen ihre Lebensdauer und erlaubt bei Methoden den Aufruf, ohne daß der Aufrufer ein Objekt der Klasse besitzt, in der die Methode definiert wurde.
Der größte Teil davon ist mir klar nur wie meinen die das mit:
und erlaubt bei Methoden den Aufruf, ohne daß der Aufrufer ....
Danke schon im vorraus!!
|

12-06-2008, 00:21
|
|
Blackgreetz
PHP Junior
|
|
Registriert seit: Oct 2005
Beiträge: 901
|
|
Hallo,
Normal rufst du die Objekte ja so auf:
Object Name = new Object();
int vari = Object.Methode()
Bei static kannst du das Object weglassen:
int vari = Methode()
mfg
Geändert von Blackgreetz (12-06-2008 um 00:36 Uhr)
|

12-06-2008, 02:25
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Das kenne ich aber anders.
Object foo = new Object();
foo.Method();
vs.
Object.Method();
Static ist zum Beispiel der ganze Kram in Math und System, deswegen kannst du schreiben System.out.println() und Math.round(). Wenn es nicht static wäre, müßtest du erst eine Instanz erzeugen - das wär richtig nervig.
Geändert von onemorenerd (12-06-2008 um 02:29 Uhr)
|

12-06-2008, 08:41
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
Re: Java Anfänger
Zitat:
Der größte Teil davon ist mir klar nur wie meinen die das mit:
und erlaubt bei Methoden den Aufruf, ohne daß der Aufrufer ....
|
Normalerweise wird eine Methode immer im Kontext einer Instanz ausgeführt. Da statische Methoden aber an kein Objekt, sondern lediglich an die Klasse gebunden sind, kannst du diese direkt aufrufen, wie onemorenerd auch bereits gezeigt habt (Blackgreetz Beispiel passt so nicht!)
|

12-06-2008, 10:15
|
|
asp2php
Banned
|
|
Registriert seit: Feb 2004
Beiträge: 11.746
|
|
Zitat:
Original geschrieben von Blackgreetz
Hallo,
Normal rufst du die Objekte ja so auf:
Object Name = new Object();
int vari = Object.Methode()
Bei static kannst du das Object weglassen:
int vari = Methode()
mfg
|
Das ist falsch!
int vari = Methode() => Methode von welcher Klasse? Und wenn 2 Klassen die gleichen Methodennamen haben, dann stürzt das Programm ab oder wie?
Die Erklärung von onemorenerd ist absolut korrekt!
|

28-05-2010, 14:19
|
|
Anyone
Registrierter Benutzer
|
|
Registriert seit: May 2010
Beiträge: 8
|
|
Zitat:
Zitat von onemorenerd
Das kenne ich aber anders.
Object foo = new Object();
foo.Method();
vs.
Object.Method();
Static ist zum Beispiel der ganze Kram in Math und System, deswegen kannst du schreiben System.out.println() und Math.round(). Wenn es nicht static wäre, müßtest du erst eine Instanz erzeugen - das wär richtig nervig.
|
Ich kenn das allerdings ein bisschen anders...
objektorientiert
Code:
Object obj = new Object();
obj.Method();
vs klassenorientiert
Bei statischen Methoden spricht man die Klasse und kein Objekt an (statisch = außerhalb des Objektkontexts). Vielleicht war das auch nur ein Schreibfehler von dir.
Zu deinem unvollendeten Satz:
und erlaubt bei Methoden den Aufruf, ohne daß der Aufrufer .... ein konkretes Objekt ist.
Ups, 2 Jahre zu spät 
|

28-05-2010, 14:34
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Anyone bekommt einen Orden für das Ausgraben uralter Threads und für die „Korrektur“ von onemorenerds korrektem Code, die eigentlich genauso aussieht.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

28-05-2010, 14:36
|
|
Anyone
Registrierter Benutzer
|
|
Registriert seit: May 2010
Beiträge: 8
|
|
Zitat:
Zitat von AmicaNoctis
Anyone bekommt einen Orden für das Ausgraben uralter Threads und für die „Korrektur“ von onemorenerds korrektem Code, die eigentlich genauso aussieht. 
|
Ja, wie gesagt. Vielleicht hat er sich auch verschrieben, weil Object.Method ist zwar syntaktisch richtig, aber vom Sinn her vollkommen falsch. Und das mit dem alten Thema habe ich leider erst zu spät gesehen.
|

28-05-2010, 14:45
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Zitat:
Zitat von Anyone
Object.Method ist zwar syntaktisch richtig, aber vom Sinn her vollkommen falsch
|
Wenn die Klasse aber nun so heißt und trotzdem statische Methoden hat…
Ich werd dann mal meine ehemalige Lehrerin anrufen und ihr sagen, dass sie „vom Sinn her vollkommen falsch“ ist. Die heißt nämlich Wolf.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

28-05-2010, 14:46
|
|
Anyone
Registrierter Benutzer
|
|
Registriert seit: May 2010
Beiträge: 8
|
|
Zitat:
Zitat von AmicaNoctis
Wenn die Klasse aber nun so heißt und trotzdem statische Methoden hat…
Ich werd dann mal meine ehemalige Lehrerin anrufen und ihr sagen, dass sie „vom Sinn her vollkommen falsch“ ist. Die heißt nämlich Wolf. 
|
Damn, du hast natürlich vollkommen recht. Habe die Klasse Object an sich vollkommen vergessen. Okay, vergesst einfach alles was ich gesagt habe.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|