JavaRush /Java-Blog /Random-DE /Methoden, ihre Parameter, Interaktion und Überladung

Methoden, ihre Parameter, Interaktion und Überladung

Veröffentlicht in der Gruppe Random-DE
Hallo wieder! In der letzten Vorlesung haben wir Klassen und Konstruktoren kennengelernt und gelernt, wie man eigene erstellt. Methoden, ihre Parameter, Interaktion und Überladung - 1Heute werden wir uns einen so integralen Bestandteil von Klassen wie Methoden genauer ansehen. Eine Methode ist eine Reihe von Befehlen, mit denen Sie eine Operation in einem Programm ausführen können. Mit anderen Worten: Eine Methode ist eine Funktion; etwas, was Ihre Klasse tun kann. In anderen Programmiersprachen werden Methoden oft als „Funktionen“ bezeichnet, aber in Java ist das Wort „Methode“ populärer geworden :) Wenn Sie sich erinnern, haben wir in der letzten Vorlesung einfache Methoden für die Cat-Klasse erstellt, damit unsere Katzen miauen können und springen:

public class Cat {

    String name;
    int age;

    public void sayMeow() {
        System.out.println("Miau!");
    }

    public void jump() {
        System.out.println(„Springender Galopp!“);
    }

    public static void main(String[] args) {
        Cat barsik = new Cat();
        barsik.age = 3;
        barsik.name = „Barsik“;

        barsik.sayMeow();
        barsik.jump();
    }
}
sayMeow()und jump()sind Methoden unserer Klasse. Das Ergebnis ihrer Arbeit ist die Ausgabe auf der Konsole:
Мяу!
Прыг-скок!
Unsere Methoden sind recht einfach: Sie geben einfach Text auf der Konsole aus. Aber in Java haben Methoden eine Hauptaufgabe – sie müssen Aktionen an den Daten eines Objekts ausführen . Ändern Sie den Wert der Daten eines Objekts, transformieren Sie es, geben Sie es an die Konsole aus oder machen Sie etwas anderes damit. Unsere aktuellen Methoden machen nichts mit den Daten des Objekts Cat. Schauen wir uns ein klareres Beispiel an:

public class Truck {

    int length;
    int width;
    int height;
    int weight;

    public int getVolume() {
        int volume = length * width * height;
        return volume;
    }
}
Wir haben zum Beispiel eine Klasse, die einen LKW darstellt – Truck. Ein LKW-Anhänger hat eine Länge, Breite und Höhe sowie ein Gewicht (dieses wird später benötigt). Bei der Methode getVolume()führen wir Berechnungen durch – wir wandeln die Daten unseres Objekts in eine Zahl um, die das Volumen angibt (wir multiplizieren Länge, Breite und Höhe). Dies ist die Zahl, die das Ergebnis der Methode sein wird. Bitte beachten Sie, dass dies in der Beschreibung der Methode angegeben ist public int getVolume. Das bedeutet, dass das Ergebnis dieser Methode eine Zahl in der Form sein mussint . Wir haben das Ergebnis der Methode berechnet und müssen es nun an unser Programm zurückgeben , das die Methode aufgerufen hat. Um das Ergebnis einer Methode in Java zurückzugeben, wird das Schlüsselwort verwendet return.

return volume;

Methodenparameter

Methoden können Werte als Eingabe akzeptieren, die als „Methodenparameter“ bezeichnet werden. Unsere aktuelle Methode getVolume()in der Klasse Truckakzeptiert keine Parameter, also versuchen wir, das Beispiel um LKWs zu erweitern. Lassen Sie uns eine neue Klasse erstellen – BridgeOfficer. Auf der Brücke ist ein Polizist im Einsatz und kontrolliert alle vorbeifahrenden Lkw, um sicherzustellen, dass deren Ladung die zulässige Gewichtsgrenze nicht überschreitet.

public class BridgeOfficer {

    int maxWeight;

    public BridgeOfficer(int normalWeight) {
        this.maxWeight = normalWeight;
    }

    public boolean checkTruck(Truck truck) {
        if (truck.weight > maxWeight) {
            return false;
        } else {
            return true;
        }
    }
}
Die Methode checkTruckverwendet einen Parameter als Eingabe – ein LKW-Objekt Truck– und bestimmt, ob der Beamte den LKW auf die Brücke lässt oder nicht. Die Logik innerhalb der Methode ist recht einfach: Wenn das Gewicht des LKWs das maximal zulässige Gewicht überschreitet, gibt die Methode zurück false. Sie müssen nach einem anderen Weg suchen :( Wenn das Gewicht kleiner oder gleich dem Maximum ist, können Sie bestehen und die Methode gibt zurück true. Wenn Sie die Ausdrücke „zurückgeben“, „Methode gibt einen Wert zurück“ immer noch nicht vollständig verstehen ” – Machen wir eine Pause vom Programmieren und schauen wir uns das anhand eines einfachen Beispiels aus dem wirklichen Leben an :) Nehmen wir an, Sie wurden krank und waren mehrere Tage lang nicht bei der Arbeit. Sie kommen mit Ihrem Krankenstand, den Sie bezahlen müssen, zur Buchhaltung. Wenn wir eine Analogie zu Methoden ziehen, dann hat der Buchhalter eine Methode paySickLeave()(„Krankenurlaub zahlen“). Als Parameter übergeben Sie dieser Methode eine Krankenstandsbescheinigung (ohne diese funktioniert die Methode nicht und Sie erhalten nichts!). Innerhalb der Arbeitsblattmethode werden die notwendigen Berechnungen durchgeführt (der Buchhalter berechnet damit, wie viel das Unternehmen Ihnen zahlen sollte), und das Ergebnis der Arbeit wird Ihnen zurückgegeben – ein Geldbetrag. Das Programm funktioniert genauso. Es ruft eine Methode auf, übergibt dort Daten und erhält schließlich das Ergebnis. Hier ist die Methode main()für unser Programm BridgeOfficer:

public static void main(String[] args) {
    Truck first = new Truck();
    first.weight = 10000;
    Truck second = new Truck();
    second.weight = 20000;

    BridgeOfficer officer = new BridgeOfficer(15000);
    System.out.println(„Lkw Nummer 1! Darf ich passieren, Officer?“);
    boolean canFirstTruckGo = officer.checkTruck(first);
    System.out.println(canFirstTruckGo);

    System.out.println();

    System.out.println(„LKW Nummer 2! Darf ich?“);
    boolean canSecondTruckGo = officer.checkTruck(second);
    System.out.println(canSecondTruckGo);
}
Wir erstellen zwei Lastkraftwagen mit einer Ladung von 10.000 und 20.000. Gleichzeitig beträgt das maximale Gewicht für die Brücke, auf der der Beamte Dienst hat, 15.000. Das Programm hat die Methode aufgerufen officer.checkTruck(first), die Methode hat alles berechnet und das Ergebnis an das Programm zurückgegeben - true, und das Programm hat es in der Variablen gespeichert boolean canFirstTruckGo. Jetzt kann er damit machen, was er will (genau wie Sie mit dem Geld, das Sie vom Buchhalter erhalten haben). Letztendlich der Code

boolean canFirstTruckGo = officer.checkTruck(first);
kommt darauf an

boolean canFirstTruckGo = true;
Ein sehr wichtiger Punkt: Der Operator returngibt nicht nur das Ergebnis der Methode zurück, sondern beendet auch deren Arbeit ! Der gesamte nach der Rückkehr geschriebene Code wird nicht ausgeführt!

public boolean checkTruck(Truck truck) {

    if (truck.weight > maxWeight) {
        return false;
        System.out.println(„Dreh dich um, Übergewicht!“);
    } else {
        return true;
        System.out.println(„Okay, mach weiter!“);
    }
}
Die Sätze, die der Beamte sagt, werden nicht an die Konsole ausgegeben, da die Methode bereits ein Ergebnis zurückgegeben und ihre Arbeit abgeschlossen hat! Das Programm kehrte zu dem Punkt zurück, an dem die Methode aufgerufen wurde. Sie müssen sich darüber keine Sorgen machen – der Java-Compiler ist intelligent genug, um einen Fehler auszulösen, wenn Sie versuchen, Code nach zu schreiben return.

Avengers: Options War

Es gibt Situationen, in denen unser Programm mehrere Optionen für die Funktionsweise einer Methode benötigt. Warum erschaffen wir nicht unsere eigene künstliche Intelligenz? Amazon hat Alexa, Yandex hat Alice, warum sind wir also schlechter? :) Im Film über Iron Man hat Tony Stark seine eigene herausragende künstliche Intelligenz geschaffen – JARVIS. Lassen Sie uns dem wunderbaren Charakter Tribut zollen und unsere KI zu seinen Ehren benennen :) Die Als erstes müssen wir Jarvis beibringen, die Leute zu begrüßen, die den Raum betreten (es wäre seltsam, wenn sich ein so großer Intellekt als unhöflich erweisen würde).

public class Jarvis {

    public void sayHi(String name) {
        System.out.println("Guten Abend, " + name + ", Wie geht es Ihnen?");
    }

    public static void main(String[] args) {
        Jarvis jarvis = new Jarvis();
        jarvis.sayHi("Tony Stark");
    }
}
Konsolenausgabe:
Добрый вечер, Тони Старк, Wie ваши дела?
Großartig! Jarvis weiß, wie man jemanden begrüßt, der hereinkommt. Am häufigsten wird es natürlich sein Besitzer sein – Tony Stark. Aber er darf nicht alleine kommen! Und unsere Methode sayHi()benötigt nur ein Argument als Eingabe. Und dementsprechend wird er nur einen der Kommenden begrüßen können und den anderen ignorieren. Nicht sehr höflich, stimmst du zu? :/ Um das Problem zu lösen, können wir in diesem Fall einfach zwei Methoden mit demselben Namen, aber unterschiedlichen Parametern in die Klasse schreiben:

public class Jarvis {

    public void sayHi(String firstGuest) {
        System.out.println("Guten Abend, " + firstGuest + ", Wie geht es Ihnen?");
    }

    public void sayHi(String firstGuest, String secondGuest) {
        System.out.println("Guten Abend, " + firstGuest + ", " + secondGuest + ", Wie geht es Ihnen?");
    }
}
Dies wird als Methodenüberladung bezeichnet . Durch die Überlastung ist unser Programm flexibler und bietet verschiedene Arbeitsmöglichkeiten. Schauen wir uns an, wie es funktioniert:

public class Jarvis {

    public void sayHi(String firstGuest) {
        System.out.println("Guten Abend, " + firstGuest + ", Wie geht es Ihnen?");
    }

    public void sayHi(String firstGuest, String secondGuest) {
        System.out.println("Guten Abend, " + firstGuest + ", " + secondGuest + ", Wie geht es Ihnen?");
    }

    public static void main(String[] args) {
        Jarvis jarvis = new Jarvis();
        jarvis.sayHi("Tony Stark");
        jarvis.sayHi("Tony Stark", "Captain America");
    }
}
Konsolenausgabe:
Добрый вечер, Тони Старк, Wie ваши дела?
Добрый вечер, Тони Старк, Капитан Америка, Wie ваши дела?
Super, beide Optionen haben funktioniert :) Allerdings haben wir das Problem nicht gelöst! Was ist, wenn drei Gäste anwesend sind? Natürlich können wir die Methode noch einmal überladen, sayHi()um die Namen von drei Gästen zu akzeptieren. Aber es können auch 4 oder 5 sein. Und so weiter bis ins Unendliche. Gibt es eine andere Möglichkeit, Jarvis beizubringen, mit einer beliebigen Anzahl von Namen zu arbeiten, ohne eine Million Methodenüberladungen sayHi()? :/ Natürlich gibt es! Wäre Java sonst die beliebteste Programmiersprache der Welt? ;)

public void sayHi(String...names) {

    for (String name: names) {
        System.out.println("Guten Abend, " + name + ", Wie geht es Ihnen?");
    }
}
Mit dem als Parameter übergebenen Datensatz ( String...names) können wir angeben, dass eine bestimmte Anzahl von Zeichenfolgen an die Methode übergeben wird. Wie viele es sein sollen, legen wir nicht im Voraus fest, sodass die Bedienung unserer Methode nun deutlich flexibler wird:

public class Jarvis {

    public void sayHi(String...names) {
        for (String name: names) {
            System.out.println("Guten Abend, " + name + ", Wie geht es Ihnen?");
        }
    }

    public static void main(String[] args) {
        Jarvis jarvis = new Jarvis();
        jarvis.sayHi("Tony Stark", "Captain America", "Schwarze Witwe", „Hulk“);
    }
}
Konsolenausgabe:
Добрый вечер, Тони Старк, Wie ваши дела?
Добрый вечер, Капитан Америка, Wie ваши дела?
Добрый вечер, Черная Вдова, Wie ваши дела?
Добрый вечер, Халк, Wie ваши дела?
Einige der Codes hier sind Ihnen unbekannt, aber das macht Ihnen nichts aus. Das Wesentliche ist einfach: Die Methode geht der Reihe nach alle Namen durch und begrüßt jeden Gast! Darüber hinaus funktioniert es für beliebig viele übertragene Leitungen! Zwei, zehn, sogar tausend – die Methode funktioniert zuverlässig bei beliebig vielen Gästen. Viel bequemer als Überladungen für alle möglichen Optionen, finden Sie nicht auch? :) Ein weiterer wichtiger Punkt: Die Reihenfolge der Argumente ist wichtig! Nehmen wir an, unsere Methode benötigt einen String und eine Zahl als Eingabe:

public class Man {

    public static void sayYourAge(String greeting, int age) {
        System.out.println(greeting + " " + age);
    }

    public static void main(String[] args) {
        sayYourAge("Mein Alter - ", 33);
        sayYourAge(33, "Mein Alter - "); //Fehler!
    }
}
Wenn eine sayYourAgeKlassenmethode Maneinen String und eine Zahl als Eingabe akzeptiert, müssen diese in dieser Reihenfolge im Programm übergeben werden! Wenn wir sie in einer anderen Reihenfolge übergeben, gibt der Compiler einen Fehler aus und die Person kann ihr Alter nicht erkennen. Übrigens sind die Konstruktoren, die wir in der letzten Vorlesung behandelt haben, auch Methoden! Sie können auch überladen werden (erstellen Sie mehrere Konstruktoren mit unterschiedlichen Argumentsätzen) und für sie ist auch die Reihenfolge der Argumentübergabe von grundlegender Bedeutung. Echte Methoden! :) :)

Und noch einmal zu den Parametern

Ja, ja, wir sind noch nicht fertig damit :) Das Thema, das wir jetzt betrachten werden, ist sehr wichtig. Es besteht eine Wahrscheinlichkeit von 90 %, dass sie bei all Ihren zukünftigen Vorstellungsgesprächen danach fragen werden! Wir werden über die Übergabe von Parametern an Methoden sprechen. Schauen wir uns ein einfaches Beispiel an:

public class TimeMachine {

    public void goToFuture(int currentYear) {
        currentYear = currentYear+10;
    }

    public void goToPast(int currentYear) {
        currentYear = currentYear-10;
    }

    public static void main(String[] args) {
        TimeMachine timeMachine = new TimeMachine();
        int currentYear = 2020;

        System.out.println(„Welches Jahr ist jetzt?“);
        System.out.println(currentYear);

        timeMachine.goToPast(currentYear);
        System.out.println("Und jetzt?");
        System.out.println(currentYear);
    }
}
Die Zeitmaschine verfügt über zwei Methoden. Beide nehmen als Eingabe eine Zahl, die das aktuelle Jahr darstellt, und erhöhen oder verringern den Wert (je nachdem, ob wir in der Zeit oder in der Zukunft zurückgehen möchten). Aber wie aus der Konsolenausgabe hervorgeht, hat die Methode nicht funktioniert! Konsolenausgabe:
Какой сейчас год?
2020
А сейчас?
2020
currentYearWir haben der Methode eine Variable übergeben goToPast(), deren Wert sich jedoch nicht geändert hat. So wie es im Jahr 2020 war, bleibt es so. Aber warum? :/ Weil Grundelemente in Java als Wert an Methoden übergeben werden. Was bedeutet das? Wenn wir eine Methode aufrufen goToPast()und dort unsere Variable übergeben int currentYear = 2020, gelangt nicht die Variable selbst in die Methode currentYear, sondern eine Kopie davon . Der Wert dieser Kopie entspricht natürlich auch 2020, aber alle Änderungen, die an der Kopie vorgenommen werden, haben keinerlei Auswirkungen auf unsere OriginalvariablecurrentYear ! Machen wir unseren Code ausführlicher und sehen, was passiert mit currentYear:

public class TimeMachine {

    public void goToFuture(int currentYear) {
        currentYear = currentYear+10;
    }

    public void goToPast(int currentYear) {
        System.out.println(„Die goToPast-Methode wurde gestartet!“);
        System.out.println(„Der currentYear-Wert innerhalb der goToPast-Methode (am Anfang) =“ + currentYear);
        currentYear = currentYear-10;
        System.out.println(„Der currentYear-Wert innerhalb der goToPast-Methode (am Ende) =“ + currentYear);
    }

    public static void main(String[] args) {
        TimeMachine timeMachine = new TimeMachine();
        int currentYear = 2020;

        System.out.println(„Welches Jahr steht ganz am Anfang des Programms?“);
        System.out.println(currentYear);

        timeMachine.goToPast(currentYear);
        System.out.println(„Welches Jahr ist jetzt?“);
        System.out.println(currentYear);
    }
}
Konsolenausgabe:
Какой год в самом начале работы программы?
2020
Метод goToPast начал работу!
Значение currentYear внутри метода goToPast (в начале) = 2020
Значение currentYear внутри метода goToPast (в конце) = 2010
А сейчас Wieой год?
2020
Dies zeigt deutlich, dass die Variable, die an die Methode übergeben wurde, goToPast()nur eine Kopie ist currentYear. Und die Änderung der Kopie hatte keinen Einfluss auf die Bedeutung des „Originals“. „ Passing by reference “ hat genau die gegenteilige Bedeutung. Lasst uns an Katzen üben! Ich meine, mal sehen, wie das Weiterleiten von Links am Beispiel von Katzen aussieht :)

public class Cat {

    int age;

    public Cat(int age) {
        this.age = age;
    }
}
Jetzt werden wir mit Hilfe unserer Zeitmaschine Barsik, den ersten Katzen-Zeitreisenden der Welt, in die Vergangenheit und Zukunft befördern! Ändern wir die Klasse TimeMachine, damit die Maschine mit Objekten arbeiten kann Cat;

public class TimeMachine {

    public void goToFuture(Cat cat) {
        cat.age += 10;
    }

    public void goToPast(Cat cat) {
        cat.age -= 10;
    }    
}
Methoden ändern jetzt nicht nur die übergebene Zahl, sondern auch das Feld ageeines bestimmten Objekts Cat. Wie Sie sich erinnern, ist uns das bei den Primitiven nicht gelungen: Die ursprüngliche Zahl hat sich nicht geändert. Mal sehen, was hier passiert!

public static void main(String[] args) {

    TimeMachine timeMachine = new TimeMachine();
    Cat barsik = new Cat(5);

    System.out.println(„Wie alt ist Barsik zu Beginn des Programms?“);
    System.out.println(barsik.age);

    timeMachine.goToFuture(barsik);
    System.out.println("Und jetzt?");
    System.out.println(barsik.age);

    System.out.println(„Tannenstöcke! Barsik ist 10 Jahre gealtert! Fahr schnell zurück!“);
    timeMachine.goToPast(barsik);
    System.out.println(„Hat es funktioniert? Haben wir die Katze wieder in ihr ursprüngliches Alter versetzt?“);
    System.out.println(barsik.age);
}
Konsolenausgabe:
Сколько лет Барсику в самом начале работы программы?
5
А теперь?
15
Елки-палки! Барсик постарел на 10 лет! Живо гони назад!
Получилось? Мы вернули коту его изначальный возраст?
5
Wow! Jetzt funktionierte die Methode anders: Unsere Katze wurde plötzlich älter und sah dann wieder jünger aus! :) Versuchen wir herauszufinden, warum. Anders als im Beispiel mit Primitiven wird bei Objekten eine Referenz auf das Objekt an die Methode übergeben. goToFuture(barsik)Den Methoden goToPast(barsik)wurde ein Verweis auf unser ursprüngliches Objekt übergeben barsik. Wenn wir also innerhalb von Methoden Änderungen vornehmen barsik.age, greifen wir auf genau den Speicherbereich zu, in dem unser Objekt gespeichert ist. Dies ist ein Link zu demselben Barsik, den wir ganz am Anfang erstellt haben. Dies nennt man „Referenzübergabe“! Allerdings ist mit diesen Links nicht alles so einfach :) Versuchen wir, unser Beispiel zu ändern:

public class TimeMachine {

    public void goToFuture(Cat cat) {
        cat = new Cat(cat.age);
        cat.age += 10;
    }

    public void goToPast(Cat cat) {
        cat = new Cat(cat.age);
        cat.age -= 10;
    }

    public static void main(String[] args) {
        TimeMachine timeMachine = new TimeMachine();
        Cat barsik = new Cat(5);

        System.out.println(„Wie alt ist Barsik zu Beginn des Programms?“);
        System.out.println(barsik.age);

        timeMachine.goToFuture(barsik);
        System.out.println(„Barsik ging in die Zukunft! Hat sich sein Alter verändert?“);
        System.out.println(barsik.age);

        System.out.println(„Und wenn du es in der Vergangenheit versuchst?“);
        timeMachine.goToPast(barsik);
        System.out.println(barsik.age);
    }
}
Konsolenausgabe:
Сколько лет Барсику в самом начале работы программы?
5
Барсик отправился в будущее! Его возраст изменился?
5
А если попробовать в прошлое?
5
Funktioniert wieder nicht! O_O Lasst uns herausfinden, was passiert ist :) Es geht um die Methoden goToPastund goToFuturedie Mechanismen, wie Links funktionieren. Jetzt Achtung!Dieser Punkt ist der wichtigste, um zu verstehen, wie Links und Methoden funktionieren. Tatsächlich wird beim Aufruf einer Methode goToFuture(Cat cat)nicht die Objektreferenz selbst an sie übergeben cat, sondern eine Kopie dieser Referenz. Das heißt, wenn wir ein Objekt an eine Methode übergeben, gibt es zwei Verweise auf dieses Objekt . Dies ist sehr wichtig, um zu verstehen, was passiert. Aus diesem Grund hat unser letztes Beispiel schließlich nichts am Alter der Katze geändert. Im vorherigen Beispiel mit der Änderung des Alters haben wir einfach die übergebene Referenz innerhalb der Methode genommen goToFuture(), das Objekt im Speicher gefunden und damit sein Alter geändert ( cat.age += 10). goToFuture()Jetzt erstellen wir innerhalb der Methode ein neues Objekt

(cat = new Cat(cat.age)),
und derselbe Kopierlink, der an die Methode übergeben wurde, wird diesem Objekt zugewiesen. Ergebend:
  • Der erste Link ( Cat barsik = new Cat(5)) verweist auf die ursprüngliche Katze (mit Alter 5)
  • catNachdem wir die Variable an die Methode übergeben goToPast(Cat cat)und einem neuen Objekt zugewiesen haben, wurde die Referenz kopiert.
Danach haben wir die Endsituation: Zwei Links verweisen auf zwei verschiedene Objekte. Wir haben jedoch nur das Alter von einem von ihnen geändert – dem, den wir innerhalb der Methode erstellt haben.

cat.age += 10;
Und wenn wir es in der Methode main()an die Konsole ausgeben barsik.age, sehen wir natürlich, dass sich sein Alter nicht geändert hat. Schließlich barsikhandelt es sich hierbei um eine Referenzvariable, die noch auf das alte, ursprüngliche Objekt mit Alter 5 zeigt, an dem nichts passiert ist. Alle unsere Alterungsmanipulationen wurden an einem neuen Objekt durchgeführt. Es stellt sich also heraus, dass Objekte per Referenz an Methoden übergeben werden. Kopien von Objekten werden niemals automatisch erstellt. Wenn Sie ein Katzenobjekt an eine Methode übergeben und dessen Alter geändert haben, wird es erfolgreich geändert. Allerdings werden die Werte von Referenzvariablen beim Zuweisen und/oder Aufrufen von Methoden kopiert! Wiederholen wir hier den Absatz über die Übergabe von Grundelementen: „Wenn wir eine Methode aufrufen changeInt()und dort unsere Variable übergeben int x = 15, gelangt nicht die Variable selbst in die Methode x, sondern ihre Kopie . Schließlich gilt dies nicht für alle Änderungen, die an der Kopie vorgenommen werden.“ beeinflussen unsere ursprüngliche Variable in irgendeiner Weise x.“ Beim Kopieren von Links funktioniert alles genauso! Sie übergeben das cat-Objekt an die Methode. Wenn Sie etwas mit der Katze selbst (also mit dem Objekt im Speicher) machen, werden alle Änderungen erfolgreich durchgeführt – wir hatten nur ein Objekt und haben es immer noch. Wenn Sie jedoch innerhalb einer Methode ein neues Objekt erstellen und es in einer Referenzvariablen speichern, die ein Parameter der Methode ist, haben wir von nun an zwei Objekte und zwei Referenzvariablen. Das ist alles! Das war gar nicht so einfach, vielleicht musste man sogar mehrmals Vorlesungen halten. Aber die Hauptsache ist, dass Sie dieses superwichtige Thema gelernt haben. Sie werden häufig (selbst unter erfahrenen Entwicklern) auf Streit darüber stoßen, wie Argumente in Java übergeben werden. Jetzt wissen Sie genau, wie es funktioniert. Weiter so! :) :)
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION