mystA sum: 15 mystB sum: 20
The instance variable in mystB did not change.
The trick: the parameter sum of the second method shadowed the instance varaible.
Overloading is when two or more methods of a class have the same name but have different parameter lists. When a method is called, the correct method is picked by matching the actual parameters in the call to the formal parameter lists of the methods.
Review: another use of the term "overloading" is when an operator
calls for different operations depending on its operands.
For example + can mean integer addition,
floating point addition, or string concatenation
depending on its operands.
Say that two processDeposit() methods were needed:
public class CheckingAccount
{
. . . .
private int balance;
. . . .
public void processDeposit( int amount )
{
balance = balance + amount ;
}
public void processDeposit( int amount, int serviceCharge )
{
balance = balance + amount - serviceCharge;
}
}
The above code implements these requirements.
Here is an example main() method that uses both methods:
class CheckingAccountTester
{
public static void main( String[] args )
{
CheckingAccount bobsAccount = new CheckingAccount( "999", "Bob", 100 );
bobsAccount.processDeposit( 200 ); // statement A
bobsAccount.processDeposit( 200, 25 ); // statement B
}
}
There are two method calls, and two methods to pick from. A method call invokes the method that matches it with both its name and its parameter list.
Examine main().
Which method, processDeposit(int)
or processDeposit(int, int)
does each statement call?