Unterschied zwischen Objekt, Methode, Klassenmethode?

3 Antworten

Objekte sind Instanzen von Klassen.

Es kann beispielsweise eine Klasse "Mensch" geben. Du selbst bist dann ein Instanz zu dieser Klasse. Also ein Objekt vom Typ "Mensch". Objekte werden i.d.R. mit dem Schlüsselwort "new" erzeugt.

Normale Methoden sind Objektgebunden. Das bedeutet, dass man sie über die einzelnen Objekte anspricht. Beim Mensch wäre sowas zum Beispiel "Atmeaus". Sowas direkt über den Klassennamen aufzurufen macht keinen Sinn. Es muss irgendwie objektgebunden sein. Also du zum Beispiel krasniqi.atmeAus();

Klassenmethoden sind statisch. Das heißt, dass sie nicht Informationen oder Aktionen an einem Objekt machen, sondern direkt was mit der Klasse an sich zu tun haben. Ein Beispiel wäre, dass du bei jeder Instanzierung dir eine statische Variable hochzählen lässt, damit du abfragen kannst, wieviel Menschen es denn in deinem Konstrukt gibt. Und diese privat statische Zahl lässt du dir dann beispielsweise über
public static int getCount(); oder so ausgeben.

Aufrufen würdest du die dann über Mensch.getCount();


Lies dich am besten in die Objektorientierung ein, es gibt gute Artikel dazu und Bücher darüber, die Leute können das vermutlich besser erklären als ich ;)

Zu C# kann ich folgendes Buch empfehlen:
http://openbook.rheinwerk-verlag.de/visual_csharp_2012/
Bis inklusive Kapitel 3 beschäftigt musst Du Lesen um deine Fragen beantwortet zu bekommen, danach kommen noch weitere Punkte der Objektorientierung und eben alles nötige zu C# dazu.

Aber in kurz und im Bezug auf C#:

Eine Methode ist eine Aufgabe, nennt man auch Funktion.
Sie sollte genau eine Aufgabe erfüllen, sie bekommt dafür Informationen (Parameter) mitgegeben und kann (muss nicht) ein Ergebnis zurück geben.
Wirklich programmiert wird nur in Methoden, sie enthalten den eigentlichen Code.

Eine Klassenmethode ist das gleiche, denn Methoden gibt's nur in Klassen.
Interessant ist der Unterschied statische oder Instanz-Methode.
Eine Instanz-Methode braucht ein Objekt (auch Instanz genannt), eine statische Methode nicht.
In einer Instanz-Methode kann jede statische Methode genutzt werden, da man dafür keine Instanz braucht.
EIne statische Methode kann aber keine Instanz-Methoden aufrufen, außer sie hat durch irgendwas eine Instanz zur Verfügung. Sie kann auch jede andere statische Methode aufrufen.

Ein Objekt bzw. eine Instanz ist die Grundidee hinter der Objektorientierung.
Sie stellt eine Art Individuum dar, die Klasse beschreibt, was für Eigenschaften und Fähigkeiten (Methoden) dieses Objekt hat. Die Klasse ist sozusagen die Vorlage, mit der jedes Objekt gebaut wird.
Wenn jetzt eine Klasse "Person" die Eigenschaft "Name" und die Methode "SageName" hat, dann hat das auch die tatsächliche Person. Du kannst dann eine Instanz von der Klasse Person erzeugen, sagst ihr den Namen "krasniqi12345" sagen und wenn Du die Methode "SageName" aufrufst, könnte sie das z.B. in die Konsole schreiben.
Eine Instanz bleib immer eindeutig. Eine zweite Instanz kann zwar exakt die selben Informationen haben und damit gleich aussehen, aber es wird niemals die selbe Instanz sein.
Das Ziel dahinter ist es, die reale Welt abzubilden. Du kennst vielleicht die Erklärung von "das gleiche" und "das selbe":
Fährt ein Auto vorbei, fährt um den Block und kommt danach wieder vorbei, dann ist es das selbe Auto.
Fährt danach ein anderes Auto mit gleichem Modell, gleiches Aussehen, sogar die selbe Person sitzt drin, dann ist es nicht das selbe, sondern das gleiche Auto.

Das Wörtchen "statisch" beschreibt das Gegenteil.
Es gibt keine Instanz, alles was statisch definiert ist, gilt immer global und für alle Instanzen gleichermaßen. Die Klasse, in der die statischen Inhalte definiert wurden, gibt eigentlich nur den Ort an, wo sie zu finden sind.

Was das alles angeht, kann es Unterschiede zu anderen Sprachen geben, selbst in C# gibt es auch andere Konzepte, wie z.B. Structs oder dynamic, was an das "Duck-Typing" anlehnt.
Aber auch was Klassen und Methoden angeht, können andere Sprachen das anders umgesetzt haben.
Was ich geschrieben habe, bezieht sich auf C#

Ein Objekt ist eine Einheit bei der du die Attributswerte ändern kannst. Eine Methode führt deine Anweisungen solange aus Bis diese das Ziel erreicht hat und eine Klassenmethode ist eine normale Methode welche meist statisch ist. Du kannst also nur auf die Methode zugreifen wenn die klasse angegeben ist