Top Menu

Jump to content
Home
    • Projects
    • Work packages
    • News
    • Getting started
    • Introduction video
      Welcome to OpenProject
      Get a quick overview of project management and team collaboration with OpenProject. You can restart this video from the help menu.

    • Help and support
    • Upgrade to Enterprise edition
    • User guides
    • Videos
    • Shortcuts
    • Community forum
    • Professional support

    • Additional resources
    • Data privacy and security policy
    • Digital accessibility (DE)
    • OpenProject website
    • Security alerts / Newsletter
    • OpenProject blog
    • Release notes
    • Report a bug
    • Development roadmap
    • Add and edit translations
    • API documentation
  • Sign in
      Create a new account
      Forgot your password?

Side Menu

  • Overview
  • News
  • Forums
  • Wiki
    • Table of contents
      • Expanded. Click to collapseCollapsed. Click to showWiki
        • Expanded. Click to collapseCollapsed. Click to showBeispielprojekte
          • Hierarchy leafFlappy Box2D
          • Hierarchy leafFlappy Improved
          • Hierarchy leafHighscore Hibernate
          • Hierarchy leafHighscore Webservice + Anbindung mit Retrofit
        • Expanded. Click to collapseCollapsed. Click to showEntwicklung mit Java
          • Hierarchy leaf001) Grundlagen - Entwicklungsumgebung
          • Hierarchy leaf002) Erstes Programm
          • Hierarchy leaf003) Variablen und Datentypen
          • Expanded. Click to collapseCollapsed. Click to show004) Schleifen
            • Hierarchy leaf1) for - Zählschleife
            • Hierarchy leaf2) while
            • Hierarchy leaf3) do while
            • Hierarchy leaf4) for each
          • Hierarchy leaf005) Arrays
          • Hierarchy leaf006) Methoden
          • Expanded. Click to collapseCollapsed. Click to show007) Objektorientierte Programmierung
            • Hierarchy leaf001) Klasse
            • Hierarchy leaf002) Vererbung und Darstellung von Klassen in UML
            • Hierarchy leaf003) Abstrakte Klasse
            • Hierarchy leaf004) Design patterns
          • Expanded. Click to collapseCollapsed. Click to show008) Webservices
            • Hierarchy leaf01) REST - Representational State Transfer
            • Hierarchy leaf02) Minimaler Webservice
            • Hierarchy leaf03) Joke Webservice
            • Hierarchy leaf04) Highscore Service
        • Expanded. Click to collapseCollapsed. Click to showMatura - Vorbereitung
          • Hierarchy leaf01) Projektmanagement
          • Hierarchy leaf02) Objektorientierte Programmierung
          • Hierarchy leaf03) Modellierung und UML
          • Expanded. Click to collapseCollapsed. Click to show04) Design Patterns
            • Hierarchy leaf00) Generelle Konzepte
            • Hierarchy leafFactory(-Method) Pattern
            • Hierarchy leafObserver Pattern
            • Hierarchy leafSingleton Pattern
            • Hierarchy leafStrategy Pattern
          • Hierarchy leaf05) Algorithmen und Datenstrukturen
          • Hierarchy leaf06) Webtechnologien
          • Hierarchy leaf07) Webservices
          • Hierarchy leaf08) Softwarequalitätsmanagement
          • Hierarchy leaf09) Softwareentwicklungsmodelle
        • Expanded. Click to collapseCollapsed. Click to showProjekt Rahmenbedingungen
          • Expanded. Click to collapseCollapsed. Click to showRetrospektive
            • Hierarchy leafRetro - [Name Schüler_in]
        • Hierarchy leafReact Native
        • Expanded. Click to collapseCollapsed. Click to showÜbungen
          • Hierarchy leaf1) Basic
          • Expanded. Click to collapseCollapsed. Click to show2) Basic
            • Hierarchy leaf001) Methode ohne Rückabewert mit Parametern
            • Hierarchy leaf002) Methode mit Parametern und Rückgabewert
            • Hierarchy leaf003) Text umdrehen
            • Hierarchy leaf004) Text umdrehen 2
            • Hierarchy leaf005) Kommandozeile
            • Hierarchy leaf006) Kommandozeile 2
            • Hierarchy leaf007) Vererbung - Geometry
            • Hierarchy leaf008) File from String
            • Hierarchy leaf009) Rekursion - Summe
            • Hierarchy leaf010) Rekursion - File
          • Expanded. Click to collapseCollapsed. Click to showDatenstrukturen
            • Hierarchy leaf011) Binärbaum
            • Hierarchy leaf012) Binärbaum - Generics
            • Hierarchy leaf013) AVL - Tree
            • Hierarchy leaf014) Linked List - Einfach verkettete Liste
            • Hierarchy leaf015) Graph
            • Hierarchy leaf016) Dijkstras shortest path first
          • Expanded. Click to collapseCollapsed. Click to showJava - Kara
            • Hierarchy leafKara lernt schreiben
You are here:
  • Wiki
  • Entwicklung mit Java
  • 007) Objektorientierte Programmierung
  • 001) Klasse

Content

001) Klasse

  • More
    • Print
    • Table of contents

Was ist eine Klasse?

  • Eine Klasse definiert einen eigenen Datentyp
  • Sie dient als Vorlage für Instanzen die von Ihr erstellt werden können
  • Sie dient der Kapselung von Funktionalität
  • Sie enthält Methoden und Attribute (Eigenschaften)

Definition einer Klasse

public class Human {
    public static final double M_TO_FEET_FACTOR = 3.28084; //Final Schlüsselwort verhindert das verändern der Variable
    private String name;
    
    public Human(String name) {
        this.name = name;
    }
    
    public String getName() {
        return this.name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public static float convertMToFeet(float meters) {
        return meters * M_TO_FEET_FACTOR;
    }
}

...deklaration der Klasse Human

  • Instanzvariable: name
  • Klassenvariable: M_TO_FEET_FACTOR
  • Konstruktor: Human(String name)
  • Instanzmethoden: getName(), setName(String name)
  • Klassenmethode: convertMToFeet

Was ist eine Instanz?

  • Die Klasse ist eine Vorlage für Instanzen die daraus erstellt werden können.
  • Um aus einer Klasse eine Instanz zu erstellen wird das Schlüsselwort new verwendet
new Human("Alfons");

...erstellt eine neue Instanz von Human

  • Es ist nicht zwingend nötigt dass von jeder Klasse eine Instanz erstellt werden kann
public Util {
   private Util() {
       
   }
   
   public static int add(int a, int b) {
       return a + b;
   }
}

...der Konstruktor der Klasse Util hat die Sichtbarkeit private, das heißt niemand außer der Klasse selbst kann den Konstruktor aufrufen

Bestandteile einer Klasse

Klassenname

Der Name der Klasse muss exakt dem Dateinamen (ohne .java Endung) entsprechen

Konstruktor

  • Eine Klasse hat immer einen Konstruktor (Sie kann auch einen leeren Konstruktor haben, dieser muss dann nicht explizit geschrieben werden)
  • Der Konstruktor hat den selben Namen wie die Klasse selbst
  • Es kann auch mehrere Konstruktor geben
  • Ein Konstruktor einer Klasse kann andere Konstruktoren der Klasse aufrufen this(...)
  • Ein Konstruktor muss den Konstruktor der Superklasse aufrufen super(...)
    • Handelt es sich beim Konstruktor der Superklasse nur um den Standard Konstruktor ohne Parameter so muss nicht super() aufgerufen werden

Methoden

Eine (nicht abstrakte) Klasse kann 2 verschiedene Arten von Methoden enthalten:

Instanzmethoden

Diese existieren nur in der Instanz einer Klasse. Das heißt, es muss zuerst eine Instanz der Klasse erstellt worden sein um diese Methoden aufzurufen.

Human human = new Human("Alfons");
System.out.println(human.getName());
Klassenmethoden

Diese Methoden enthalten das Schlüsselwort static. Um sie aufzurufen wird keine Instanz der Klasse benötigt.

System.out.println(Human.convertMToFeet(1.8));

Attribute (Eigenschaften) von Klassen

Attribute sind Variablen die im Kontext einer Klasse existieren.

Es gibt zwei verschiedene Typen von Variablen:

Instanzvariablen

Dies Variablen existien nur in Instanzen der Klasse.

public Human2 {
    public String name;
    
    public Human2(String name) {
        this.name = name;
    }
    
    public static void main(String[] args) {
        System.out.println(new Human2("Rambina").name);
    }
}


...direkter Zugriff auf eine Instanzvariable

Klassenvariablen

Dies Variablen existien nur in der Klasse, jedoch nicht in Instanzen. Sie gibt es nur einmal pro Klasse.

System.out.println(Human.M_TO_FEET_FACTOR);

...aufruf der statischen Variable M__TO__FEET_FACTOR

Loading...