Heim > Java > javaLernprogramm > Hauptteil

Java-Alias

PHPz
Freigeben: 2024-08-30 15:45:29
Original
825 Leute haben es durchsucht

Wenn in Java mehrere Referenzen verwendet werden, um auf dasselbe Objekt zu verweisen, wird dies üblicherweise als „Alias“ bezeichnet. Das Problem mit Aliasing besteht darin, dass ein Benutzer für mehrere andere Referenzen auf ein bestimmtes Objekt und den Eigentümer schreibt , erwartet nicht, dass sich dieses Objekt ändert. Hier kann der Code, der Aliasing enthält, schnell verwirrend werden und außerdem ist das Debuggen sehr mühsam. Lassen Sie uns sehen, wie Java Alias ​​funktioniert.

WERBUNG Beliebter Kurs in dieser Kategorie JAVA MASTERY - Spezialisierung | 78 Kursreihe | 15 Probetests

Starten Sie Ihren kostenlosen Softwareentwicklungskurs

Webentwicklung, Programmiersprachen, Softwaretests und andere

Wie funktioniert ein Alias ​​in Java?

Wie wir bereits besprochen haben, tritt Aliasing auf, wenn mehrere Referenzen demselben Objekt zugeordnet sind. Dies bedeutet auch, dass es mehrere Aliase für einen Standort gibt, die geändert werden können, und diese bestimmten Aliase haben mehrere Typen.

Nehmen wir ein Beispiel. x und y sind zwei Variablennamen, die zwei Typen haben, X und Y. Y erweitert X.

Y[] y = new Y[10];
X[] x = y;
x[0] =  new X();
Y[0].func1();
Nach dem Login kopieren

Auch in der Erinnerung zeigen beide auf denselben Ort.

Java-Alias

Der Speicherort, auf den gezeigt wird, wird sowohl durch x als auch durch y angezeigt. Das tatsächlich gespeicherte Objekt wählt jedoch aus, welche Methode zur Laufzeit aufgerufen werden soll.

Sehen wir uns ein weiteres Beispiel an.

Rectangle b1 = new Rectangle (0, 0, 50, 150);
Rectangle b2 = b1;
Nach dem Login kopieren

Sowohl „b1“ als auch „b2“ beziehen sich auf dasselbe Objekt, oder wir können sagen, dass das gegebene Objekt zwei Namen hat, z. B. „b1“ und „b2“. Ähnlich wie eine Person zwei Namen hat, können auch Objekte zwei Namen haben.

Wenn zwei Alias-Variablen vorhanden sind, wirken sich Änderungen, die eine Variable verursachen, auch auf die andere aus, wie unten gezeigt.

System.out.println (b2.width);
b1.grow (40, 40);
System.out.println (b2.width);
Nach dem Login kopieren

Beim Ausführen des Codes werden Sie sehen, dass die Änderungen, die an einem Rechteck verursacht wurden, auch im zweiten Rechteck aufgetreten sind. Dies ist eines der wichtigsten Dinge, die bei Alias ​​in Java beachtet werden müssen.

Beispiele für Java-Alias

Im Folgenden finden Sie einige Beispielprogramme für Java Alias.

Beispiel #1

Code:

//class X
class X {
//function 1
public void func1()
{
System.out.println("called sample function 1");
}
}
//Class Y that extends the class X
class Y extends X
{
//function 1
public void func1()
{
System.out.println("called sample function 1");
}
//function 2
public void func2()
{
System.out.println("called sample function 2");
}
}
//main class
public class AliasExample {
//main method
public static void main(String[] args) {
Y[] y = new Y[10];
X[] x = y;
x[0] =  new X();
y[0].func1();
}
}
Nach dem Login kopieren

Ausgabe:

Java-Alias

Wie kommt es dazu? Was muss geändert werden? Ist es möglich, dieses Problem zu lösen?

Ja!! Der einzige Grund für diese Ausnahme besteht darin, dass Java Aliase zur Laufzeit verwaltet. Erst während der Laufzeit kann es erkennen, dass das erste ein Objekt von Y statt X sein sollte.

//class X
class X {
//function 1
public void func1()
{
System.out.println("called sample function 1");
}
}
//Class Y that extends the class X
class Y extends X
{
//function 1
public void func1()
{
System.out.println("called sample function 1");
}
//function 2
public void func2()
{
System.out.println("called sample function 2");
}
}
//main class
public class AliasExample {
//main method
public static void main(String[] args) {
Y[] y = new Y[10];
X[] x = y;
x[0] =  new Y();
y[0].func1();
}
}
Nach dem Login kopieren

Ausgabe:

Java-Alias

Beispiel #2

Code:

//main class
public class AliasExample {
//main method
public static void main(String[] args) {
//create two different arrays with same value
int a= 87;
int b=87;
//checks whether a and b are equal
System.out.println(a == b);
//assign b equal to a
b=a;
//checks whether a and b are equal
System.out.println(a == b);
}
}
Nach dem Login kopieren

Ausgabe:

Java-Alias

Was passiert, wenn zwei Arrays, a und b, anstelle von Ganzzahlvariablen verwendet werden?

//main class
public class AliasExample {
//main method
public static void main(String[] args) {
//create two different arrays with same value
int []a = {81, 54, 83};
int []b = {81, 54, 83};
//checks whether a and b are equal
System.out.println(a == b);
//assign b equal to a
b=a;
//checks whether a and b are equal
System.out.println(a == b);
}
}
Nach dem Login kopieren

Ausgabe:

Java-Alias

In diesem Programm werden im ersten Schritt zwei Arrays, a und b, erstellt. Dann prüfen a und b ähnlich wie im obigen Programm, ob sie gleich sind. Beim Ausführen des Codes ist ersichtlich, dass die Ausgabe für die erste Prüfung falsch und die Ausgabe für die zweite Prüfung wahr ist. Das liegt daran, dass Java Alias ​​funktioniert.

Fazit

Der Nachteil von Alias ​​besteht darin, dass ein Benutzer auf ein bestimmtes Objekt schreibt und der Eigentümer bei einigen anderen Referenzen nicht annimmt, dass dieses Objekt geändert werden soll.

Das obige ist der detaillierte Inhalt vonJava-Alias. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!