Java >> Tutoriel Java >  >> Java

Objet comme argument en Java

En Java, lorsqu'un type primitif est passé à une méthode, cela se fait en utilisant l'appel par valeur. Les objets sont passés implicitement en utilisant l'appel par référence.

Cela signifie que lorsque nous transmettons des types de données primitifs à la méthode, seules les valeurs sont transmises aux paramètres de la fonction, de sorte que toute modification apportée au paramètre n'affecte pas la valeur des paramètres réels.

Alors que les objets en Java sont des variables de référence, pour les objets, une valeur qui est la référence à l'objet est transmise. Par conséquent, l'objet entier n'est pas transmis, mais sa référence est transmise. Toute modification de l'objet dans la méthode modifierait l'objet dans le tas.

Passer l'objet en tant que paramètre dans la fonction

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);
	}
}

Sortie

Sum of a and b :13

Lors de la création d'une variable de type classe, nous ne créons qu'une référence à un objet.

Lorsque nous passons cette référence à une fonction, les paramètres qui la reçoivent feront référence au même objet que celui référencé par l'argument.

Publicité

Passer l'objet en tant que paramètre dans le constructeur

L'une des utilisations les plus courantes des objets en tant que paramètres implique les constructeurs. Un constructeur crée un nouvel objet initialement identique à l'objet passé. Il est également utilisé pour initialiser les membres privés.

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();
	}
}

Sortie

Sum of a and b :23
Publicité

Renvoyer l'objet de la fonction

En Java, une fonction peut renvoyer n'importe quel type de données, y compris des objets de type classe.

Par exemple :dans le programme ci-dessous, la fonction add() renvoie un objet contenant la somme des valeurs de deux nombres (objets) différents.

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();
	}
}

Sortie

Enter a: 23
Enter b: 34
23 34
Enter a: 25
Enter b: 35
25 35
48 69   /*sum*/

Balise Java