...
In the example above, the modifyReference
method appends " Doe" to the name
object, and this change is also visible outside the method as well.
It's important to note that even though the reference is passed by value, you cannot reassign the reference to a new object inside the method and have it affect the original reference outside the method. In other words, you cannot change which object the original reference points to using pass-by-reference semantics.
...
InventoryItem Class - Previous example - Passing on an object as an argument
Code Block | ||
---|---|---|
| ||
package OverloadConstructors;
/**
* This program passes an object as an argument.
* Book Example 6-13
* Modified by Dr. Roark
*/
public class InventoryDemoTwo
{
public static void main(String[] args)
{
// Create an InventoryItem object.
InventoryItem item = new InventoryItem("Wrench", 20);
// Pass the object to the DisplayItem method.
System.out.println("The contents of item are:");
displayItem(item);
// Create another InventoryItem object.
InventoryItem itemTwo = new InventoryItem("Wrench", 20);
// Display the object's contents.
System.out.println("The contents of item are:");
displayItem(itemTwo);
// Pass the object to the ChangeItem method.
changeItem(itemTwo);
// Display the object's contents again.
System.out.println("Now the contents of item are:");
displayItem(itemTwo);
} //end of main
/**
* The following method accepts an InventoryItem
* object as an argument and displays its contents.
*/
public static void displayItem(InventoryItem pItem)
{
System.out.println("Description: " + pItem.getDescription());
System.out.println("Units: " + pItem.getUnits());
}
/**
* The following method accepts an InventoryItem
* object as an argument and changes its contents.
*/
public static void changeItem(InventoryItem pItem)
{
pItem.setDescription("Hammer");
pItem.setUnits(5);
}
}
|
...
This Java program is demonstrating how objects can be passed to methods as arguments and how a method can change the state of an object passed to it.
main
method first creates anInventoryItem
objectitem
with a description of "Wrench" and 20 units.Then,
item
is passed to thedisplayItem
method, which accepts anInventoryItem
object as an argument. ThedisplayItem
method prints the description and units of theInventoryItem
passed to it.After that, another
InventoryItem
objectitemTwo
is created with the same values asitem
. It prints the description and units ofitemTwo
directly in themain
method.Next,
itemTwo
is passed to thechangeItem
method, which also accepts anInventoryItem
object as an argument. This method modifies theInventoryItem
it receives by setting the description to "Hammer" and the units to 5.Finally, it again prints the description and units of
itemTwo
. However, this time the values are different because they were modified by thechangeItem
method.
This demonstrates that when you pass an object to a method, the method has access to the original object and can modify its state. This is different from passing primitive types to methods, where the method only gets a copy of the value and cannot modify the original.