Warum deklariert man Variablen in Methodenkopf?

Keksmanu

Mitglied
Hi,Wenn ich hier z.b diese Methode habe: "public test(int a){}"
könnte ich dann nicht auch "public test(){ int a}" machen? was ist der Zweck zeugs im Methodenkopf zu deklarieren?

Hoffe man versteht meine Frage ;)
mfg Keks
 

turtle

Top Contributor
public test(int a) bzw. public test() sind keine gültige Methoden SIgnaturen, da Angabe über den über den Return-Wert fehlt.

Wären welche angegeben, sind es zwei VERSCHIEDEN Methoden
public void test(int a) ist eine Methode mit einem int-Parameter
public void test() ist eine Methode ohne Parameter, also völlig anders.
 

kaoZ

Top Contributor
Gültige Methodendeklarationen wären z.B

1. Eine Methodendeklaration mit Rückgabetyp void, also ohne Rückgabe und einer Integer Variable als Eingabeparameter

2. Eine Methodendeklaration mit Rückgabetyp Test und einer Integer Variable als Eingabeparameter

Java:
public void test(){
  //Methode ohne Rückgabewert und Eingabeparameter
}

public void test(int a){
  //Überladene Methode mit Integer Variable als Eingabeparameter
}

public Test test(int a){

  /*gibt ein neues Test Objekt zurück / Methode zählt NICHT als Überladen,
   *zudem sollten keine identischen Bezeichner für unterschiedliche Methoden genutzt werden. */

  return new Test(); 
}

Das hier wären Beispiele für einen Standardkonstruktor und einen überladenen ( hier der Klasse Test)

Java:
public Test(){} // Leerer Standard Konstruktor

public Test(int a){
  // Überladener Konstruktor da selber Name , aber Angabe eines EingabeParameters
}

Konstruktoren erkennst du daran das,

- kein Rückgabewert ( void / Test / usw.)
- keine Modifizierer ( static / final )
- Bezeichner immer Identisch mit dem Klassennamen ( die man zudem immer UpperCamelCase schreibt)

Gibst du keine Konstruktoren an werden durch die JVM bei Objekterzeugung immer die leeren Standardkonstruktoren aufgerufen.
 
Zuletzt bearbeitet:

snueffel

Mitglied
ich glaube das Problem ist das fehlende Verständnis von einer "Deklaration":
Java:
public void(int a)
int a ist hierbei ein Übergabeparameter für die Methode - Die Methode benötigt diesen um "wie gewünscht" zu arbeiten, d.h. es wird immer die gleiche Aktion ausgeführt mit einem bestimmten Wert für a.

void beschreibt hierbei dass die Methode beim Aufruf nichts zurückgibt. Möchte ich jedoch mit einer Methode beispielsweise zwei Ganzzahlen addieren und das Ergebnis erhalten, muss ein Rückgabetyp, in diesem Fall ein int, angegeben werden:
Java:
public int addiere(int zahl1, int zahl2)
{
    return zahl1+zahl2;
}

return beschreibt dabei, was zurückgegeben wird: Hier werden die beiden Parameter addiert und dann zurückgegeben. Ein aufruf in der main-Methode könnte dann wie folgt aussehen:
Java:
int erg = addiere(1, 1);
System.out.println(erg); // -> 2
 

Beatsleigher

Bekanntes Mitglied
Auch wenn hier sehr gute, und vor allem hilfreiche Antworten sind, ich glaube ich kann das hier vereinfachen:

Java:
public void method() {  }
ist eine Methode, die keine Parameter annimmt, das heißt, de Methode müsste dann evtl. auf Klassenvariablen zurückgreifen, um einfachste Dinge zu erledigen, und in manchen Fällen ist das ein klarer Verstoß gegen die Prinzipien der objektorientierten Programmierung.

Hier ein Beispiel:
Einmal mit Parameterübergabe, und einmal ohne.
Java:
class System {
     // Mit
     public static String getProperty(String identifier) { return <Eigenschaft von identifier>; }

    // Jetzt wird die Methode aufgerufen:
    System.out.println("User name is: " + getProperty("user.home"));

    // Ohne
    public static String identifier = "";
    public static String getProperty() { return <Eigentschaft von identifier>; }

    // Jetzt wird die Methode aufgerufen:
    identifier = "user.home";
    System.out.println("User name is: " + getProperty());
}

Im obigen Beispiel sieht man einen gravierenden Verstoß:
Datenkapselung.

Wenn diese Methode in einer anderen Klasse aufgerufen würde (also, die 2.), und du mit einer andere Klasse/Methode die gleiche Methode in System aufrufst, würdest du evtl. den gleichen Wert bekommen, und dein Programm könnte dir um die Ohren fliegen.
Klar, du könntest die Methoden ohne static erstellen, und Instanzen der Klasse erstellen, aber es geht hier um's Prinzip.
Jetzt zu den Folgen des Verstoßes gegen das Prinzip der Datnkapselung:
(Wie oben gennant), kann man ausversehen den gleichen Wert bekommen, was ein Memoryleak wäre.
Nun, in erster Linie mag es für dich nicht schlimm wirken, es mag sogar bei dir alles perfekt funktionieren.
Nun stell dir aber vor, du packst so eine Monströsität in eine Klassenbibliothek, und irgend ein Nutzer hat dann in einem Programm, welches diese Lib benutzt, zwei Fenster offen, die auf diese Methode zeitgleich zugreifen.
Der Nutzer würde:
a) die gleichen Werte bekommen, was eventuell sogar einen schwerwiegenden Rechenfehler bewirkt, und seiner Firma (jetzt übertrieben) Milliarden an Verlusten kostet, und der Nutzer weiß nicht warum. Im schlimmsten Fall musst du dann dafür aufkommen.
oder
b) der Nutzer kriegt ein Haufen Exceptions, weil, z.B., das Programm versucht, einen String in einen double zu packen, das Programm stürzt ab, der Kunde benutzt das Programm nicht mehr, weil er es scheibenkleisterig findet, und du hast dann einen Kunden weniger, und du musst ihm eventuell sein Geld erstatten.

Das sind nur zwei Beispiele, aber es sind noch viele mehr da.

Ich hoffe ich habe es dir verständlich gemacht, wieso man diese Parameter benutzt :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Fehlermeldung obwohl Variablen bereits deklariert sind? Java Basics - Anfänger-Themen 14
scratchy1 Wie deklariert man eine Methode, die ein Objekt zurückgeben soll? Java Basics - Anfänger-Themen 22
J Klasse wird als private erkannt obwohl sie public deklariert ist Java Basics - Anfänger-Themen 3
B Interface Generics: prüfen ob Interface deklariert wird Java Basics - Anfänger-Themen 18
E Fehlermeldung: variable wird nicht initalisiert obwohl sie deklariert ist Java Basics - Anfänger-Themen 9
T Warum muss diese Variable final deklariert werden? Java Basics - Anfänger-Themen 5
P float Eingabe wird nicht akzeptiert, obwohl Variable als float deklariert Java Basics - Anfänger-Themen 2
D Konstante deklariert wie Methode übergebe? Java Basics - Anfänger-Themen 5
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
T Variablen Java Basics - Anfänger-Themen 1
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
M Aufsummieren von variablen Wertegrößen Java Basics - Anfänger-Themen 17
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
ashi Variablen aufrufen Java Basics - Anfänger-Themen 17
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
C Konstruktoren und Variablen Java Basics - Anfänger-Themen 42
F Auf Variablen eines Konstruktors zugreifen Java Basics - Anfänger-Themen 4
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
Arif Vererbung Methodenvererbung mit finalen Variablen Java Basics - Anfänger-Themen 1
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
S Variablen Variablen in einer Schleife erstellen lassen Java Basics - Anfänger-Themen 11
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
F Variablen Werte einer Klasse überschreiben Java Basics - Anfänger-Themen 4
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
J Frage dazu Variablen klassenübergreifend zu verändern Java Basics - Anfänger-Themen 22
M Java Instanz-Variablen ? Java Basics - Anfänger-Themen 3
B Variablen von Methoden übertragen Java Basics - Anfänger-Themen 2
M Variablen umbenennen Java Basics - Anfänger-Themen 1
T Körper Brechnung - Lokale Variablen in Methoden übergeben Java Basics - Anfänger-Themen 10
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
mars90 Fehler in der Variablen Deklaration Java Basics - Anfänger-Themen 8
E Variablen in formatierter Ausgabe Java Basics - Anfänger-Themen 15
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
M Komisches Verhalten der Variablen Java Basics - Anfänger-Themen 6
H Variablen Multiplikation einer inkrementierten Variablen Java Basics - Anfänger-Themen 5
scratchy1 Variablen vertauschen wenn Bedingung "umgedreht" wird Java Basics - Anfänger-Themen 40
J Variablen mit einer anderen Klasse bekannt machen Java Basics - Anfänger-Themen 7
C Methoden Problem beim Speichern von Variablen Java Basics - Anfänger-Themen 1
A Übergreifende Variablen Java Basics - Anfänger-Themen 17
A Variablen Verständnisfrage bzgl. Variablen/Referenzen Java Basics - Anfänger-Themen 3
H Variablen Methode zum Abfragen von Variablen aus Subklassen Java Basics - Anfänger-Themen 9
P Variablen Variablen voneinander abhängig Java Basics - Anfänger-Themen 54
F Liste nach einer Variablen sortieren Java Basics - Anfänger-Themen 6
L Variablen in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
M For-Schleife durch zwei versch. Variablen begrenzen Java Basics - Anfänger-Themen 27
J Klassen Variablen in andere Klassen oder Methoden übernehmen Java Basics - Anfänger-Themen 1
P Liste auslesen und in Variablen speichern Java Basics - Anfänger-Themen 7
temi Redundante Variablen Java Basics - Anfänger-Themen 29
Aprendiendo Zweifel mit versteckter Variablen Java Basics - Anfänger-Themen 16
L Variablen einmal nur zu weisen Java Basics - Anfänger-Themen 62
D Statische Variablen/Methoden Java Basics - Anfänger-Themen 3
R Abfrage von Variablen in Unterklassen einer ArrayList Java Basics - Anfänger-Themen 9
M Listener für Button - Wert von Variablen verändern Java Basics - Anfänger-Themen 14
S Vererbung Variablen klassenübergreifend nutzen Java Basics - Anfänger-Themen 42
R Auf Variablen einer anderen Klasse zugreifen? Java Basics - Anfänger-Themen 1
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
Aruetiise Variablen JFrame und Variablen Java Basics - Anfänger-Themen 3
L Variablen dekleration + reset Java Basics - Anfänger-Themen 16
T Übernahme einer Variablen im ActionListener/ActionEvent Java Basics - Anfänger-Themen 2
D Kapselung final Variablen mit Getter? Java Basics - Anfänger-Themen 2
C Variablen von einem JFrame in einen anderen übertragen Java Basics - Anfänger-Themen 3
P Interface Variablen-Inhalte werden nicht übergeben Java Basics - Anfänger-Themen 3
C Variablen in Schleifen außerhalb verwenden Java Basics - Anfänger-Themen 2
S Variablen Flexible Variablen Namen Java Basics - Anfänger-Themen 3
R Erste Schritte 3 Variablen hochzählen lassen Java Basics - Anfänger-Themen 1
RowdyN Variablen Variablen beliebig benennen? Java Basics - Anfänger-Themen 6
S OOP Variablen zwischen mehreren Klassen Java Basics - Anfänger-Themen 11
T Koordinatensystem zeichnen - Variablen merken? Quadratische Funktion zeichnen? Java Basics - Anfänger-Themen 5
H Variablen einer Schleife zwischenspeichern Java Basics - Anfänger-Themen 2
P Klassen Variablen von einer Klasse zur anderen Java Basics - Anfänger-Themen 5
H Objekt überschreibt Variablen vorheriger Objekte Java Basics - Anfänger-Themen 2
P Variablen in Excel speichern Java Basics - Anfänger-Themen 6
S PHP Aufruf mit mehreren Variablen Java Basics - Anfänger-Themen 2
F Variablen unterschiedlicher Datentypen Java Basics - Anfänger-Themen 6
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
L Vergleich zweier Variablen, mit Abweichung Java Basics - Anfänger-Themen 3
P Variablen einer Methode in andere Method übergeben Java Basics - Anfänger-Themen 6
G Variablen Verwendung von Variablen in anderer Klasse Java Basics - Anfänger-Themen 6
P Textfelder in Variablen speichern Java Basics - Anfänger-Themen 13
K arraygröße durch variablen Konstruktor? Java Basics - Anfänger-Themen 7
J Vererbung Variablen aus Superklasse übernehmen Java Basics - Anfänger-Themen 2
L Variablen aus TXT Datei auslesen und vergleichen. Java Basics - Anfänger-Themen 5
K Welchen Typ haben Variablen in Default-Methoden und in statischen Methoden in Schnittstellen? Java Basics - Anfänger-Themen 4
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
L zwei Variablen gleichzeitig übergeben Java Basics - Anfänger-Themen 6
J Vererbung privater Variablen Java Basics - Anfänger-Themen 7
D Klassen Verhalten von Klassenvererbung bei Variablen Java Basics - Anfänger-Themen 1
G Alle Objekte und Variablen automatisch ausgeben Java Basics - Anfänger-Themen 7
S OOP Werte von Vektoren mit 3 Variablen ausgeben lassen Java Basics - Anfänger-Themen 3
A Variablen aus einer Schleife gezielt auslesen Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben