Was sind Klassen, Objekte und Methoden in Java?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Das ist ein bisschen schwierig in eigene Worte zu fassen, aber ich probiere es mal.

Eine Klasse ist sowas wie ein Muster. Stellen wir uns spaßeshalber mal eine Klasse namens "Auto" vor. In der Klasse kannst du festlegen, welche Attribute und Methoden Autos haben. 

Attribute sind sowas wie Variablen (beim Auto z.B. Farbe, Länge, Breite, Höhe, Leistung, Hersteller, Typ etc.). 

Methoden sind sowas wie Funktionen oder Prozeduren (beim Auto z.B. oeffnen(), schliessen(), anlassen(), blinken() etc.)

Objekte nenne ich selber immer Instanzen einer Klasse. Also wenn du die Klasse "Auto" fertig gebaut hast, kannst du in einer anderen Klasse Objekte vom Typ "Auto" erstellen.

Auto mamasFlitzer = new Auto();

Dadurch hast du ein Objekt namens "mamasFlitzer", bei dem du jetzt die Attribute einstellen kannst oder Methoden aufrufen kannst

mamasFlitzer.farbe = Color.RED; (Achtung, schlechter Stil, normalerweise baut man für sowas noch die Methoden getFarbe() und setFarbe() und greift nicht direkt auf die Attribute zu)
mamasFlitzer.oeffnen();

Das, was du noch geschrieben hast mit "mehrere Methoden in der Klasse haben den selben namen, wie die Klasse aber mit unterschiedlichen Parametern", sind keine Methoden, sondern Konstruktoren. Damit kannst du festlegen, was passieren soll, wenn eine neue Instanz der Klasse erzeugt wird. Beispielsweise kannst du einen Konstruktor bauen, der die Attribute "Hersteller", "Typ" und "Farbe" beim instanzieren der Klasse gleich festlegt.

Auto papasSchlitten = new Auto("Nissan", "GT-R", Color.BLACK);

Der Unterschied zwischen Funktionen und Methoden ist, dass Methoden immer zu einer Instanz einer Klasse gehören (z.B. papasSchlitten.anlassen();) und Funktionen halt eigenständige Programmschnipsel sind, die ohne Klasse funktionieren (in Java fällt mir da gar kein Beispiel zu ein, aber z.B. wenn du Excel die Formel =FINDEN("Bla", A1) eingibst, dann ist das eine Funktion, weil es halt ohne Klasse oder Objekt aufgerufen werden kann und ein Ergebnis zurückgibt.

Ich hoffe mal, ich hab das halbwegs verständlich erklärt. Wenn nicht, einfach nochmal fragen.

Recht herzlichen Dank für deine Antwort !

1
@precursor

Bitteschön.

Was mir grade noch eingefallen, was ich noch schreiben wollte:

Bei den Konstruktoren hast du ja gesagt, dass es davon mehrere in der Klasse gibt. Das nennt man "überladen". Geht mit Konstruktoren oder Methoden.

Man kann davon mehrere mit dem gleichen Namen erstellen, aber sie müssen verschiedene Parameter und/oder verschiedene Rückgabewerte haben. Zum Beispiel könntest du zwei verschiedene Methoden Namens "getFarbe" machen, wo du einmal die Farbe und einmal den String, also den Namen der Farbe zurückgibst.

public Color getFarbe()
{
    return this.farbe;
}

public String getFarbe()
{
    String farbName;
    if (this.farbe.equals(Color.BLACK)) {
         farbName = "schwarz"; }
    else if (this.farbe.equals(Color.RED)) {
         farbName = "rot"; }
    else {
         farbName = "unbekannt"; }

    return farbName;
}

1

Methode ist kein blödes Wort, ist sicherlich nicht blöder als Prozedur ;)

objektorientierte Programmierung meint, dass man Objekte erstellen kann, z.B:

public class Mensch(){
   private String name;
   private int alter;

   public Mensch(String n, int a){
     this.name = n;
     this.alter = a;

   public void setAlter(int a){
     this.alter = a;
   }

   public String getName(){
     return name;
   }

   public int getAlter(){
     return alter;
   }
}

von diesem Menschen kann man dann ein Objekt bzw. eine Instanz erzeugen
mittels Mensch thomas = new Mensch("Thomas",21);

und dieser thomas verfügt dann über die Werte alter und name, wobei man durch das Keywort private nicht direkt auf seinen Namen zugreifen kann, 
man kann also nicht thomas.name = "Max" machen, 

jedoch kann man durch den getter getName den Namen von thomas herausfinden

gäbe es diese Objektorientierung nicht müsste man für jeden Menschen alle Werte erzeugen, was z.B. so aussehen würde 

...in der main-Methode

String thomasName = "Thomas"
int thomasAlter = 21;

String lukasName = "Lukas"
int lukasAlter = 10;

was wenn du 100 Menschen hast ziemlich unübersichtlich wird

außerdem gibt es durch die Objektorient. den Vorteil der Vererbung (googln^^)


man erzeugt also Objekte, zum Beispiel ein Auto, ein Haus, einen Menschen usw. usf.  und mit denen kann man dann viel viel besser Arbeiten


man kann auch static Methoden erstellen, die benötigen kein Objekt um zu funktionieren 








Vielen Dank für deine Antwort, ich werde über das geschriebene nachdenken.

0

Unter einem Objekt X der Klasse K versteht man Speicherplatz,

  • dessen Struktur und Größe durch K definiert ist
  • und dem Methoden zugeordnet sind, welche implementiert sind entweder in der Klasse K selbst oder in einer Klasse, von der K erbt.

Man spricht hier von Methoden (statt von Funktionen), da jede Methode über ihre explizit genannten Parameter hinaus noch einen zusätzlichen weiteren Parameter hat:  Er ist das Objekt, dem sie beim Aufruf zugeordnet ist.

Lies bitte auch

Ok, ich verstehe deine Antwort zwar beim ersten Lesen nicht, aber ich werde mir die Links, die du beigefügt hast, durchlesen.

Vielen Dank für deine Antwort !

0