Objektorientierte Programmierung: Unterschied zwischen den Versionen

Aus CCWiki
Zur Navigation springen Zur Suche springen
Zeile 36: Zeile 36:


== Klasse ==
== Klasse ==
Eine '''Klasse''' kann man sich wie eine Vorlage vorstellen. Aus dieser Vorlage können '''Instanzen''' erstellt werden.
=== Konstruktor ===
Jede '''Klasse''' hat einen Konstruktor, ist dieser leer, d.h. er nimmt keine Parameter, muss dieser nicht geschrieben werden. Der Konstruktor heißt immer gleich wie die Klasse selbst.
<syntaxhighlight lang='java' line>
public class Animal {
  private String name;
  //Standardkonstruktor wird verwendet.
}
...
Animal a = new Animal();
</syntaxhighlight>
Wollen wir nur beispielsweise garantieren, dass ein '''Animal''' bei der Instanzierung einen Namen hat, so könnten wir den '''Konstruktor''' verändern.
<syntaxhighlight lang='java' line>
public class Animal {
  private String name;
  public Animal(String name) {
    this.name = name;
  }
}
...
Animal a = new Animal("Alfons");
</syntaxhighlight>


== Abtsrakte Klasse ==
== Abtsrakte Klasse ==

Version vom 17. Januar 2021, 15:36 Uhr

Objektorientierte Programmierung

Java

Java ist eine Objektorientierte Programmiersprache. In einigen Punkten nimmt Sie die Objektorientierung nicht so streng wie andere Sprachen. Ein Beispiel hierfür wären die primitiven Datentypen. Somit ist in Java nicht alles ein Objekt.

Primitive Datentypen

In Java gibt es eine vielzahl von primitiven Datentypen. Sie unterscheiden sich darin, dass Sie kein Object sind. Sie haben keine Methoden und auch keine Attribute. Wird eine Variable mit einem primitiven Datentyp erstellt und dieser Variable ein Wert zugewiesen, so enthält diese Variable den wirklichen Wert und nicht nur eine Referenz auf das eigentliche Objekt:

//Variable a enthält den Wert 10
int a = 10;
//Variable b enthält nur den Verweis auf das Integer Objekt mit dem Wert 10
Integer b = Integer.valueOf(10);

Zu jedem primitiven Datentyp, gibt es einen entsprechende Klasse:

Entsprechende Klasse für primitive Datentypen
primitiver Datentyp Klasse
int Integer
float Float
double Double
char Character
boolean Boolean

Primitive Datentypen können automatisch in ihr entsprechendes Klassenäquivalent umgewandelt werden und natürlich umgekehrt. Dieser Prozess nennt sich Autoboxing. Dies ist vorallem von Vorteil, wenn mit Collections (Listen,...) gearbeitet wird, da diese nur mit Klassen funktionieren.

//Umwandlung der Zahl 10 in ein Integer Object
Integer b = 10;
//Integer Object wird in primitive Zahl 10 umgewandelt
int c = b;

Klasse

Eine Klasse kann man sich wie eine Vorlage vorstellen. Aus dieser Vorlage können Instanzen erstellt werden.

Konstruktor

Jede Klasse hat einen Konstruktor, ist dieser leer, d.h. er nimmt keine Parameter, muss dieser nicht geschrieben werden. Der Konstruktor heißt immer gleich wie die Klasse selbst.

public class Animal {
  private String name;

  //Standardkonstruktor wird verwendet.
}
...
Animal a = new Animal();

Wollen wir nur beispielsweise garantieren, dass ein Animal bei der Instanzierung einen Namen hat, so könnten wir den Konstruktor verändern.

public class Animal {
  private String name;

  public Animal(String name) {
    this.name = name;
  }
}
...
Animal a = new Animal("Alfons");

Abtsrakte Klasse

Interface

Vererbung

Implementierung

Instanz vs Klasse

Sichtbarkeit

Multithreading