public class Javakurse20 { public static void main (String[] args) { //Erzeugen eines Mensch-Objektes und speichern in der Variable "hansi" Mensch hansi = new Mensch(); //Aufruf des Konstruktors int eineGanzeZahl = 100; hansi.setIQ((short)eineGanzeZahl); System.out.println("eineGanzeZahl hat zuerst den Wert: " + eineGanzeZahl); Mensch.doubleIQ(eineGanzeZahl); //eineGanzeZahl wurde in der Methode doubleIQ verdoppelt - ist sie jetzt auch hier doppelt so gross? System.out.println("eineGanzeZahl hat nach der Verdopplung den Wert: " + eineGanzeZahl); Mensch susi = new Mensch(); susi.setGeschlecht('W'); //Susi ist nun eine Frau System.out.println("Susi ist: " + susi.geschlecht); Mensch.machEinenMann(susi); //ist jetzt Susi noch eine Frau oder ein Mann? System.out.println("Susi ist: " + susi.geschlecht); } } //definieren der Klasse Mensch - diese Klasse gibt an, welche Eigenschaften eines Menschen für unsere Zwecke relevant sind class Mensch { static int anzahlAugen = 2; //das ist eine Klassenvariable (->static): alle zukünftigen Objekte dieser Klasse, also alle Menschen //werden dieselbe Variable untereinander teilen. Sobald diese Variable für einen Menschen geändert wird, //ist sie für *alle* Menschen geändert char geschlecht; //ab hier Instanzvariablen - jeder Mensch hat seine eigenen Instanzvariablen, die nur für ihn gelten. short iq; //Intelligenzquotient boolean erbkrankheiten; //vorhanden oder nicht String augenfarbe; public Mensch() //ein Konstruktor - wird bei jedem Erzeugen eines Objektes aufgerufen { geschlecht = 'M'; iq = 100; //implizites Casting: "100" ist eigentlich intern eine Integer - sie wird auf short runtergecastet erbkrankheiten = false; augenfarbe = "dunkelbraun"; } static void machEinenMann(Mensch einMensch) { einMensch.geschlecht = 'M'; } static int getAnzahlAugen() //einzige statische Methode in dieser Klasse { return anzahlAugen; } void setGeschlecht(char neuesGeschlecht) //Ändern des Geschlechts { geschlecht = neuesGeschlecht; //die Instanzvariable geschlecht erhält den per Parameter übergebenen Wert } void setIQ(short iq) { this.iq = iq; //wenn sowohl Parametername als auch Klassenvariablen-/Instanzvariablenname gleich sind //muss man vor jene Variable, die sich auf die Klasse bezieht, "this." voranstellen //this bezieht sich auf das aktuelle Objekt, in dem Fall auf das Objekt in "einStudent" } static void doubleIQ(int justAnIQ) { justAnIQ = 2*justAnIQ; //der Parameter "justAnIQ" wird nun verdoppelt und das Ergebnis wird wieder dem Parameter zugewiesen } boolean wirdDuemmer(short dummZiffer) { if (iq >= dummZiffer) //iq darf letztendlich nicht unter 0 sein { iq -= dummZiffer; return true; //Subtraktion erfolgreich durchgeführt } else return false; //Kein Erfolg } }