If the instruction z.set2(y.get1( )); is executed, which of the following is true?

If the instruction z.set2(y.get1( )); is executed, which of the following is true?

a)       (y = = z) is still true
b)       (y.get1( ) = = z.get1( )) but (y.get2( ) != z.get2( ))
c)       (y.get1( ) = = z.get1( )) and (y.get2( ) = = z.get2( )) but (y != z)
d)       (y.get1( ) = = z.get2( )) and (y.get2( ) = = z.get1( )) but (y != z)
e)       the statement causes a run-time error

Consider a class that stores 2 int values.  These values can be assigned int values with the messages set1(x) and set2(x) where x is an int, and these values can be accessed through get1( ) and get2( ).  Assume that y and z are two objects of this class.  The following instructions are executed:
y.set1(5);
y.set2(6);
z.set1(3);
z.set2(y.get1( ));
y = z;

Answer:  a.


Explanation:  Since y=z; was performed previously, y and z are aliases, so that a change to one results in a change to the other.  The statement z.set2(y.get1( )); is essentially the same as z.set2(z.get1( )); or y.set2(y.get1( )); and in any case, it sets the second value to equal the first for the object which is referenced by both y and z.


Enhancing Classes

Learn More Multiple Choice Question :