Unterschied Konstruktor / Getter Setter

Leno

Bekanntes Mitglied
Hi an die Java Götter !

ich habe ein Problem mit dem OOP Ansatz. Als folgendes verstehe Ich nicht ganz, also ein Konstruktor kann dazu genutzt werden um ein Objekt zu erzeugen , Ich kann auch Werte übergeben an den Konstruktor OK ! Und eine Getter / Setter Methode wird im Zusammenhang mit Datenkapselung ( Private ) genutzt um Werte zu setzen und zu bekommen! OK brauche Ich dan noch einen Konstruktor ??? wenn Ich sowie Werte über Getter / Setter setzen kann.

Java:
class Auto {

	public int sitze;
	public String marke;
	public int geschwindigkeit;

	// Konstruktor ohne Parameterliste. Wird kein Konstruktor angegeben so
	// erzeugt Java einen Default Konstruktor.

	public Auto() {

		sitze = 0;
		marke = "unbekannt";
		geschwindigkeit = 0;

	}

	// Konstruktor mit Parameterliste !

	public Auto(int neue_anzahl_sitze, String neue_marke,
			int neue_geschwindigkeit) {

		sitze = neue_anzahl_sitze;
		marke = neue_marke;
		geschwindigkeit = neue_geschwindigkeit;

	}

}

// Neue Objekte werden mihilfe des new Operators + eines Konstruktors erzeugt! 


public class Beispiel_für_Konstruktor {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Auto auto1 = new Auto(2, "BMW", 200); // Erzeugt eine neues Objekte auto
												// und ruft den Konstruktor
												// den man selber definieren
												// kann auf.
		System.out.println(auto1.geschwindigkeit);
		System.out.println(auto1.marke);
		System.out.println(auto1.sitze);

		Auto auto2 = new Auto(4, "Audi", 240);

		System.out.println(auto2.geschwindigkeit);
		System.out.println(auto2.marke);
		System.out.println(auto2.sitze);

		Auto auto3 = new Auto();

		System.out.println(auto3.geschwindigkeit);
		System.out.println(auto3.marke);
		System.out.println(auto3.sitze);

	}

}


Kann mir jemand sagen wie Ich hier im Quellecode eine Getter / Setter Methode einbaue und wozu Ich das ganze nutzen kann ??

MFG LENO
 

Dit

Bekanntes Mitglied
Wenn du keinen Konstruktor schreibst, hat die Klassen natürlich trotzdem einen "unsichtbaren" Konstruktor ohne übergabeparameter, damit eine Klasse erzeugt werden kann.

So gesehen kannst du den Konstruktor weg lassen. Aber man kann natürlich nicht sagen, wenn man Methoden hat die Variablen übergeben bekommen, man den Konstruktor weg lassen kann.
Das kann natürlich auch unabhängig voneinander sein.
 
G

Gast2

Gast
Wenn du keinen Konstruktor schreibst, hat die Klassen natürlich trotzdem einen "unsichtbaren" Konstruktor ohne übergabeparameter, damit eine Klasse erzeugt werden kann.

Das ist kein "unsichtbarer" Konstruktor sondern der "default constructor". Der wird vom Compiler eingefügt wenn kein anderer Konstruktor explizit ausprogrammiert ist, siehe auch:
Classes

So gesehen kannst du den Konstruktor weg lassen. Aber man kann natürlich nicht sagen, wenn man Methoden hat die Variablen übergeben bekommen, man den Konstruktor weg lassen kann.
Das kann natürlich auch unabhängig voneinander sein.

Das eine hat nur bedingt was mit dem anderen zu tun. Die Frage ist meiner Meinung nach eher: Will man ein Object erzeugen das schon direkt bei dem Konstruktoraufruf die Membervariablen belegt oder will man ein leeres Object erzeugen und die Werte später setzen.
 

Dit

Bekanntes Mitglied
Das ist kein "unsichtbarer" Konstruktor sondern der "default constructor". Der wird vom Compiler eingefügt wenn kein anderer Konstruktor explizit ausprogrammiert ist, siehe auch:
Classes



Das eine hat nur bedingt was mit dem anderen zu tun. Die Frage ist meiner Meinung nach eher: Will man ein Object erzeugen das schon direkt bei dem Konstruktoraufruf die Membervariablen belegt oder will man ein leeres Object erzeugen und die Werte später setzen.

Mir sind die Sachen bewusst ;) hatte auch erst das Wort Default Konstruktor verwendet, dennoch passt für mich auch der Begriff "unsichtbarer", da er ja nicht da ist ;)

aber ich stimme dir zu!

EDIT: mit dem zweiten Satz sprichst du ja genau das an, was unser vorredner schon geschrieben hat! du zwingst den Benutzer der Klasse übergabe parameter zu setzen!

EDIT2: Das sagt natürlich aus, wenn du einen Konstruktor hast mit übergabeparametern überschreibst du den defaultkonstruktor! (daher auch jem. zwingen parameter zu setzen)
 
Zuletzt bearbeitet:

FArt

Top Contributor
Zwingen hört sich so negativ an... fordern wäre besser... sinnvoll bei immutable objects.

Gründe für die eine oder andere Variante: immutable objects, dependency injection, lazy initialisation, object pooling, java beans, ... (siehe eben obigen Link)
 

Dit

Bekanntes Mitglied
Kann mir jemand sagen wie Ich hier im Quellecode eine Getter / Setter Methode einbaue

MFG LENO

Java:
  public int getSitze(){
    return sitze;
  }

  public void setSitze(int sitze){
    this.sitze = sitze;
  }

und dann macht man aber überlicherweiße die Variablen Sichtbarkeit auf
Java:
private

Java:
 private int    sitze;

sonst kann ja jeder die getter/setter umgehen!

...wozu Ich das ganze nutzen kann ??

Wie du schon beschrieben hast, macht man das der Sichtbarkeitshalber. Der Vorteil ist, das die Nutzer deiner Klasse GEFORDERT ^^ werden deine "getter" und "setter" zu benutzen und du dort noch z.B. Fehlerbehandlungen vornehmen kannst.

Beispiel:

Java:
 public int getSitze(){
    return sitze;
  }

  public void setSitze(int sitze){
    if (sitze == 1){
      System.out.println("Dieser Wert ist hier nicht erlaubt");
    }else{
      this.sitze = sitze;
    }
  }
 
Zuletzt bearbeitet:
G

Gast2

Gast
Zuletzt bearbeitet von einem Moderator:

Dit

Bekanntes Mitglied
Ich habe mir Java selbst in der Ausbildung beigebracht, und genau solche Sachen ließt man nicht! Daher bin ich froh, wenn solche Details nochmal erläutert werden ;)

ich nehm sowas gerne auf!!
 

stareagle

Mitglied
Hallo,

was bisher noch nicht erwähnt wurde: Sobald du eine Collection (oder andere komplexe Objekte) in deinem Objekt verwendest, brauchst du einen Konstruktor, um diese Collection zu erzeugen. Denn sonst kommt beim ersten Zugriff auf die Collection eine NullPointerException. Einzige Alternative wäre bei einem Zugriff auf die Collection jedes mal zu prüfen, ob die Collection noch
Code:
null
ist. Beispiel:

Java:
package net.example;

import java.util.List;
import java.util.ArrayList;

public class SchoolClass {

  private String name;
  private List<Pupil> pupils;

  public SchoolClass {
    pupils = new ArrayList<Pupil>();
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public List<Pupil> getPupils() {
    return pupils;
  }

  public void setPupils(List<Pupil> pupils) {
    this.pupils = pupils;
  }

  public void addPupil(Pupil pupil) {
    pupils.add(pupil);
  }
}

Wenn die
Code:
List
Code:
pupils
nicht im Konstruktor initialisiert würde, würde man in Zeile 32 eine NPE bekommen.

Gruß

Stareagle
 
G

Gast2

Gast
Java:
Hallo,

was bisher noch nicht erwähnt wurde: Sobald du eine Collection (oder andere komplexe Objekte) in deinem Objekt verwendest, brauchst du einen Konstruktor, um diese Collection zu erzeugen. Denn sonst kommt beim ersten Zugriff auf die Collection eine NullPointerException. Einzige Alternative wäre bei einem Zugriff auf die Collection jedes mal zu prüfen, ob die Collection noch null ist.
Öhm... was spricht dagegen die Liste direkt beim deklarieren zu initialisieren? Wozu brauchst du da zwangsweise nen Kontruktor?

Java:
public class Foo {
    private List<Apple> list = new ArrayList<Apple>;
   
    public void addApple(Apple apple) {
        list.add(apple);
    }
}
 
G

Gast2

Gast
@stareagle
Das Membervariablen in Objecten nicht initialisiert werden ist ja auch keine Eigenschaft von einem Konstruktor. Man KANN es in einem Konstruktor machen, muss es aber nicht.
 

Andi_CH

Top Contributor
was bisher noch nicht erwähnt wurde: Sobald du eine Collection (oder andere komplexe Objekte) in deinem Objekt verwendest, brauchst du einen Konstruktor, um diese Collection zu erzeugen.
Käse ;-) das geht auch ohne Konstruktor,wie auch Eike schon tippte.
Den Konstruktor müsste man übrignes mit () schreiben

Java:
public class SchoolClass {

  private List<Pupil> pupils = new ArrayList<Pupil>();

  public SchoolClass { // public SchoolClass() währe korrekt
  }

}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Unterschied Konstruktor und Klassenname x = new Klassenname; Java Basics - Anfänger-Themen 3
M Unterschied main-Methode und Konstruktor Java Basics - Anfänger-Themen 13
MoxMorris Integer.MAX_VALUE und Double.MAX_VALUE Unterschied Java Basics - Anfänger-Themen 3
R Java boolean Unterschied " == " und " = " Java Basics - Anfänger-Themen 3
berserkerdq2 Größter unterschied von extends thread und implements runnable? Java Basics - Anfänger-Themen 2
P Unterschied Installation von zipped JDK vs Installer-JDK (auf Windows)? Java Basics - Anfänger-Themen 2
S Unterschied zwischen Denkweisen Java Basics - Anfänger-Themen 13
M Unterschied Integer.toString(x) und x.toString() Java Basics - Anfänger-Themen 22
H Arrays: Größten Zahlen Unterschied herausfinden Java Basics - Anfänger-Themen 20
Ras Unterschied zwischen parser xml and api xml Java Basics - Anfänger-Themen 7
K Unterschied Information Hiding und Kapselung? Java Basics - Anfänger-Themen 2
X Was ist der Unterschied zwischen materialisierten und nichtmaterialisierten Attributen einer Klasse? Java Basics - Anfänger-Themen 1
jhCDtGVjcZGcfzug Was ist der Unterschied zwischen diesen Quellcodes? Java Basics - Anfänger-Themen 3
G Methoden wo ist der Unterschied?? Java Basics - Anfänger-Themen 11
D Unterschied charAt() substr() Java Basics - Anfänger-Themen 3
Y Unterschied zwischen WindowBuilder und herkömmlichen erstellen des GUI´s? Java Basics - Anfänger-Themen 9
U Worin besteht der Unterschied zwischen call by reference und call by value? Java Basics - Anfänger-Themen 14
D Unterschied == und equals in Arrays Java Basics - Anfänger-Themen 2
H .jar unterschied .class Java Basics - Anfänger-Themen 3
E Unterschied zwischen new und import Java Basics - Anfänger-Themen 5
O Unterschied Arrays, Listen, Mengen Java Basics - Anfänger-Themen 24
K Unterschied for-Schleife Java Basics - Anfänger-Themen 14
B Unterschied zwischen (List<T> a) und (T[] a) Java Basics - Anfänger-Themen 7
M Schlüsselworte Unterschied: String.matches und Pattern.compile Java Basics - Anfänger-Themen 2
G Unterschied Instanz- Klassenvariable Java Basics - Anfänger-Themen 11
C Methoden Unterschied zwichen public int, public static int und public static void Java Basics - Anfänger-Themen 2
Aprendiendo Unterschied zwischen Referenzvariable und Instanzvariable. Java Basics - Anfänger-Themen 2
H Unterschied BufferedReader und BufferedInputStream Java Basics - Anfänger-Themen 4
N Unterschied von Post- und Preinkrement Java Basics - Anfänger-Themen 3
N Unterschied zwischen Checked und Unchecked Exceptions Java Basics - Anfänger-Themen 12
T Unterschied dynamischer und statischer Laufzeittyp Java Basics - Anfänger-Themen 1
schoenosrockos Unterschied zwischen Objekten und vererbungen Java Basics - Anfänger-Themen 1
D Unterschied Date - Calendar Java Basics - Anfänger-Themen 1
J Variablen Unterschied zwischen lokalen-, Instanz-, Klassenvariablen Java Basics - Anfänger-Themen 6
J Warum ist das ein Unterschied (Integer / int) Java Basics - Anfänger-Themen 2
S Erste Schritte Unterschied "if" und "else if" Java Basics - Anfänger-Themen 27
F Erste Schritte Unterschied: Array "leer" / "null" Java Basics - Anfänger-Themen 3
V Unterschied x++ und x=x++ Java Basics - Anfänger-Themen 6
O Unterschied Baum <-> Automat Java Basics - Anfänger-Themen 2
A Klassen Unterschied Warteschlange, Stapel und Liste Java Basics - Anfänger-Themen 3
L Unterschied zwischen Klassen - und Instanzvarbiablen Java Basics - Anfänger-Themen 1
M Wo liegt der Unterschied? Deklaration Klasse oder Konstruktur Java Basics - Anfänger-Themen 3
S Unterschied print() und println() Java Basics - Anfänger-Themen 3
S Unterschied .jar Datei ausführen und junit Testfall... Java Basics - Anfänger-Themen 3
S Datentypen Unterschied elementare und zusammengesetzte/strukturierte Datentypen Java Basics - Anfänger-Themen 5
M Unterschied zwischen Classpath eines Eclipse Projektes und dem CLASSPATH? Java Basics - Anfänger-Themen 3
S Unterschied Ausführung in IDE <-> Befehlszeile Java Basics - Anfänger-Themen 0
C Unterschied Objekte! Java Basics - Anfänger-Themen 13
D Unterschied zwischen double und Double Java Basics - Anfänger-Themen 4
Q Unterschied zwischen static und keinem Modifier Java Basics - Anfänger-Themen 15
A Unterschied Textdatei und Quelltextdatei Java Basics - Anfänger-Themen 5
K Unterschied zwischen Jar, war und ear Dateien Java Basics - Anfänger-Themen 3
R Erste Schritte Unterschied Array-Parameter zu Array als Parameter? Java Basics - Anfänger-Themen 7
V Unterschied Array & ArrayList Java Basics - Anfänger-Themen 13
D Geschwindigkeits unterschied bei import? Java Basics - Anfänger-Themen 13
T Unterschied zwischen Integrationstest und JUnit test? Java Basics - Anfänger-Themen 12
L Unterschied zu C++ Java Basics - Anfänger-Themen 6
A Unterschied JDK SDK Java Basics - Anfänger-Themen 4
L Objekterzeugung Unterschied..? Java Basics - Anfänger-Themen 6
K Unterschied zwischen break und continue in einer Schleife Java Basics - Anfänger-Themen 14
B Klassen Unterschied Konstruktoren. Java Basics - Anfänger-Themen 3
A Exakte Unterschied zwischen Java EE und Java SE? Java Basics - Anfänger-Themen 4
J Unterschied zwischen statische und nicht statische Methoden? Java Basics - Anfänger-Themen 14
S Interface Unterschied: setContentPane() & getContentPane().add Java Basics - Anfänger-Themen 5
Helgon Unterschied runnable und normale jar Java Basics - Anfänger-Themen 6
D Unterschied bidirectional unidirectional Java Basics - Anfänger-Themen 10
F Interface Unterschied von Attributen und Methoden bei abstrakten Klassen und Interfaces Java Basics - Anfänger-Themen 5
O Java unterschied zwischen Interface und Interface_Referenzen!!?? Java Basics - Anfänger-Themen 7
I Unterschied Lizenz EPL und LGPL Java Basics - Anfänger-Themen 7
P Unterschied Windowclosed / WindowClosing Java Basics - Anfänger-Themen 10
J scheduleAtFixedRate scheduleWithFixedDelay Unterschied? Java Basics - Anfänger-Themen 17
S Erste Schritte Grundsatzfragen Unterschied Java / PHP Java Basics - Anfänger-Themen 6
P Unterschied JRE innerhalb/ außerhalb des JDK Verzeichnisses? Java Basics - Anfänger-Themen 5
H printf: Unterschied %f und %g Java Basics - Anfänger-Themen 5
M Unterschied SDK 1.4 und 1.6 Java Basics - Anfänger-Themen 5
S Unterschied java.util.prefs / java.util.Properties Java Basics - Anfänger-Themen 3
J unterschied zwischen awt und swing Java Basics - Anfänger-Themen 6
T Unterschied in Zahlendarstellungen Java Basics - Anfänger-Themen 2
F Unterschied JPanel und JFrame Java Basics - Anfänger-Themen 5
K Unterschied Klassen- und Instanzattribute Java Basics - Anfänger-Themen 4
S Unterschied Comparable und Comparator Java Basics - Anfänger-Themen 2
C unterschied generische typen und supertypen als methodenparameter Java Basics - Anfänger-Themen 3
J Instanzvariablen - Lokale Variablen - warum der Unterschied? Java Basics - Anfänger-Themen 5
P Unterschied dieser 2 code Zeilen Java Basics - Anfänger-Themen 12
I Datentypen Unterschied in Deklaration von ArrayList Java Basics - Anfänger-Themen 26
G Unterschied e extends y vs ? extends y Java Basics - Anfänger-Themen 5
M Unterschied append / write aus der Klasse Writer Java Basics - Anfänger-Themen 2
M unterschied OutpuStreamWriter und BufferedWriter Java Basics - Anfänger-Themen 5
B Unterschied zwischen String & char Array? Java Basics - Anfänger-Themen 5
J Unterschied Instanzattribut und Referenzvariable Java Basics - Anfänger-Themen 4
J Unterschied bei Schleifen Java Basics - Anfänger-Themen 2
B Was ist der unterschied zwischen Singleton und Strategy? Java Basics - Anfänger-Themen 6
B Variablen: unterschied zwischen Klassen und Instanzvariable Java Basics - Anfänger-Themen 2
W Unterschied JFrame und JLabel bezüglich Layout? Java Basics - Anfänger-Themen 2
B Generische Vererbung was ist der Unterschied? Java Basics - Anfänger-Themen 4
B ArrayList generisch? was ist der Unterschied? Java Basics - Anfänger-Themen 4
H Unterschied zwischen 2 Date in Sekunden am einfachsten? Java Basics - Anfänger-Themen 5
tanja Der Unterschied Zwischen Arrays in Java und ADA Java Basics - Anfänger-Themen 11
ModellbahnerTT Unterschied zwischen zwei Frame close Varianten Java Basics - Anfänger-Themen 3
D Unterschied innere Klasse/ anonyme innere Klasse Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben