Objekt als Argument in Java
Wenn in Java ein primitiver Typ an eine Methode übergeben wird, geschieht dies durch die Verwendung von Call-by-Value . Objekte werden implizit per Call-by-Reference übergeben.
Das bedeutet, wenn wir primitive Datentypen an die Methode übergeben, werden nur Werte an Funktionsparameter übergeben, sodass Änderungen an Parametern den Wert der tatsächlichen Parameter nicht beeinflussen.
Während Objekte in Java Referenzvariablen sind, wird bei Objekten ein Wert übergeben, der die Referenz auf das Objekt darstellt. Daher wird nicht das gesamte Objekt übergeben, sondern das referenzierte Objekt wird übergeben. Alle Änderungen am Objekt in der Methode würden das Objekt im Heap ändern.
Objekt als Parameter in Funktion übergeben
class Add { int a; int b; Add(int x,int y)// parametrized constructor { a=x; b=y; } void sum(Add A1) // object 'A1' passed as parameter in function 'sum' { int sum1=A1.a+A1.b; System.out.println("Sum of a and b :"+sum1); } } public class classExAdd { public static void main(String arg[]) { Add A=new Add(5,8); /* Calls the parametrized constructor with set of parameters*/ A.sum(A); } }
Ausgabe
Sum of a and b :13
Beim Erstellen einer Variablen vom Typ Klasse erstellen wir nur eine Referenz auf ein Objekt.
Wenn wir diese Referenz an eine Funktion übergeben, beziehen sich die Parameter, die sie erhalten, auf dasselbe Objekt wie das, auf das das Argument verweist.
AnzeigeObjekt als Parameter im Konstruktor übergeben
Eine der häufigsten Verwendungen von Objekten als Parameter sind Konstruktoren. Ein Konstruktor erstellt ein neues Objekt, das anfänglich dasselbe ist wie das übergebene Objekt. Es wird auch verwendet, um private Mitglieder zu initialisieren.
class Add { private int a,b; Add(Add A) { a=A.a; b=A.b; } Add(int x,int y) { a=x; b=y; } void sum() { int sum1=a+b; System.out.println("Sum of a and b :"+sum1); } } class ExAddcons { public static void main(String arg[]) { Add A=new Add(15,8); Add A1=new Add(A); A1.sum(); } }
Ausgabe
Sum of a and b :23Anzeige
Das Objekt von der Funktion zurückgeben
In Java kann eine Funktion jeden Datentyp zurückgeben, einschließlich Klassentypobjekten.
Zum Beispiel:In dem unten angegebenen Programm gibt die Funktion add() ein Objekt zurück, das die Summe der Werte zweier verschiedener Zahlen (Objekte) enthält.
import java.util.Scanner; class TwoNum { private int a,b; Scanner kb=new Scanner(System.in); void getValues() // getValues() take values of a,b for every no. { System.out.print("Enter a: "); a=kb.nextInt(); System.out.print("Enter b: "); b=kb.nextInt(); } void putValues()// putValues() show values for every no. { System.out.println(a+" "+b); } TwoNum add(TwoNum B)/*class type function add() takeobject 'B' as parameter*/ { TwoNum D=new TwoNum();//object D act as instance variable D.a=a+B.a; D.b=b+B.b; return (D);//returning object D } } class ExTwoNum { public static void main(String arg[]) { TwoNum A=new TwoNum(); A.getValues(); A.putValues(); TwoNum B=new TwoNum(); B.getValues(); B.putValues(); TwoNum C; /*object A calls add() passing object B as parameter and result are return at C*/ C=A.add(B); C.putValues(); } }
Ausgabe
Enter a: 23 Enter b: 34 23 34 Enter a: 25 Enter b: 35 25 35 48 69 /*sum*/