Overloading - PowerPoint PPT Presentation

About This Presentation
Title:

Overloading

Description:

Returns the sum of the calling object and the argument. public Money add(Money otherAmount) ... return sum; Example of Using the Money Class. public class MoneyDemo ... – PowerPoint PPT presentation

Number of Views:35
Avg rating:3.0/5.0
Slides: 18
Provided by: robertw94
Learn more at: https://www.ecs.csun.edu
Category:
Tags: is | it | overloading | sum | this

less

Transcript and Presenter's Notes

Title: Overloading


1
Overloading
2
Overloading Basics
  • We have seen that you can give the same name to
    methods in different classes.
  • You can also give the same name to methods within
    the same class.
  • This is called overloading.
  • In order for this to work there must be something
    different about the parameter lists to the two
    methods.

3
Overloading Basics (contd)
  • For example, one method may have three
    parameters, another with the same name may have
    only two parameters, and yet another may have
    parameters of a different type.
  • When Java encounters the invocation of a method
    name which may have different definitions, it
    selects the one for which the arguments in the
    invocation match the number and types of the
    parameters in the method definition.

4
Overloading Basics (contd)
  • If Java cannot find a method which exactly
    matches the types of the arguments, it will try
    to make some simple type conversions.
  • The Math class uses overloading for some of its
    methods.
  • That is, it decides which version of a method to
    use based on the types of the arguments.

5
Overloading Example
  • / This is just a toy class to illustrate
    overloading./public class Statistician
    public static void main(String args)
    double average1 Statistician.average(40.0,
    50.0) double average2
    Statistician.average(1.0, 2.0, 3.0) char
    average3 Statistician.average('a', 'c')
    System.out.println("average1 " average1)
    System.out.println("average2 "
    average2) System.out.println("average3
    " average3) public static double
    average(double first, double second)
    return ((first second)/2.0) public
    static double average(double first,
    double second, double third)
    return ((first second
    third)/3.0) public static char
    average(char first, char second)
    return (char)(((int)first (int)second)/2)

6
Another Overloading Example
Pet
name String age int weight double
writeOutput() void set(String newName) void set(int newAge) void set(double newWeight) void set(String newName, int newAge, double newWeight) void getName() String getAge() int getWeight() double
7
Another Overloading Example (contd)
  • / Class for basic pet records name, age,
    and weight./public class Pet private
    String name private int age //in years
    private double weight //in pounds /
    This main is just a demonstration program.
    / public static void main(String args)
    Pet myDog new Pet( )
    myDog.set("Fido", 2, 5.5)
    myDog.writeOutput( ) System.out.println("
    Changing name.") myDog.set("Rex")
    myDog.writeOutput( )
    System.out.println("Changing weight.")
    myDog.set(6.5) myDog.writeOutput( )
    System.out.println("Changing age.")
    myDog.set(3) myDog.writeOutput( )

8
Another Overloading Example (contd)
  • public void writeOutput( )
    System.out.println("Name " name)
    System.out.println("Age " age " years")
    System.out.println("Weight " weight "
    pounds") public void set(String
    newName) name newName
    //age and weight are unchanged.
    public void set(int newAge) if
    (newAge lt 0)
    System.out.println("Error invalid age.")
    System.exit(0) else
    age newAge //name and weight are
    unchanged.

9
Another Overloading Example (contd)
  • public void set(double newWeight)
    if (newWeight lt 0)
    System.out.println("Error invalid weight.")
    System.exit(0) else
    weight newWeight //name and
    age are unchanged. public void
    set(String newName, int newAge, double
    newWeight) name newName
    if ((newAge lt 0) (newWeight lt 0))
    System.out.println("Error invalid age
    or weight.") System.exit(0)
    else age
    newAge weight newWeight

10
Another Overloading Example (contd)
  • public String getName( )
    return name public int getAge( )
    return age public
    double getWeight( ) return weight

11
Overloading and Automatic Type Conversion
  • Java always tries to use overloading before it
    tries to use automatic type conversion.
  • If it can find a method definition that matches
    the argument types it will use that method.
  • Java will do automatic type conversion only if it
    fails to match the argument types.

12
The Money Class Example
  • import java.util./ Objects represent
    nonnegative amounts of money, such as 100,
    41.99, 0.05./public class Money
    private long dollars private long cents
    public void set(long newDollars)
    if (newDollars lt 0)
    System.out.println( "Error
    Negative amounts of money are not allowed.")
    System.exit(0) else
    dollars newDollars
    cents 0

13
The Money Class Example (contd)
  • public void set(double amount) if
    (amount lt 0)
    System.out.println( "Error
    Negative amounts of money are not allowed.")
    System.exit(0) else
    long allCents
    Math.round(amount100) dollars
    allCents/100 cents allCents100
    public void set(Money
    otherObject) this.dollars
    otherObject.dollars this.cents
    otherObject.cents

14
The Money Class Example (contd)
  • / Precondition The argument is an
    ordinary representation of an amount of money,
    with or
  • without a dollar sign. Fractions of a cent
    are not allowed. / public void
    set(String amountString) String
    dollarsString String centsString
    if (amountString.charAt(0) '') //Delete ''
    if any
  • amountString amountString.substring(1)
    amountString amountString.trim( )
    int pointLocation amountString.indexOf(".")
    //Locate decimal point
  • if (pointLocation lt 0) //If no decimal
    point cents 0
    dollars Long.parseLong(amountString)
    else //String has a decimal point.
    dollarsString
    amountString.substring(0, pointLocation)
    centsString
    amountString.substring(pointLocation 1)
    if (centsString.length( ) lt 1) //if one
    digit meaning tenths of a dollar
    centsString centsString "0"
    dollars Long.parseLong(dollarsString)
    cents Long.parseLong(centsString)
    if ((dollars lt 0) (cents lt 0) (cents gt
    99))
    System.out.println( "Error
    Illegal representation of money.")
    System.exit(0)

15
The Money Class Example (contd)
  • public void readInput( )
    System.out.println("Enter amount on a line by
    itself") Scanner keyboard new
    Scanner(System.in) String amount
    keyboard.nextLine( ) set(amount.trim(
    )) / Does not go to the next
    line after outputting money. / public
    void writeOutput( )
    System.out.print("" dollars) if
    (cents lt 10) System.out.print(".0"
    cents) else
    System.out.print("." cents)

16
The Money Class Example (contd)
  • / Returns n times the calling object.
    / public Money times(int n)
    Money product new Money( )
    product.cents ncents long
    carryDollars product.cents/100
    product.cents product.cents100
    product.dollars ndollars carryDollars
    return product / Returns
    the sum of the calling object and the argument.
    / public Money add(Money otherAmount)
    Money sum new Money( )
    sum.cents this.cents otherAmount.cents
    long carryDollars sum.cents/100
    sum.cents sum.cents100 sum.dollars
    this.dollars
    otherAmount.dollars carryDollars
    return sum

17
Example of Using the Money Class
  • public class MoneyDemo public static void
    main(String args) Money start
    new Money( ) Money goal new Money( )
    System.out.println("Enter your current
    savings") start.readInput( )
    goal start.times(2) System.out.print(
    "If you double that, you will have
    ") goal.writeOutput( )
    System.out.println(", or better yet")
    goal start.add(goal)
    System.out.println( "If you triple
    that original amount, you will have")
    goal.writeOutput( ) System.out.println(
    ) System.out.println("Remember A penny
    saved") System.out.println("is a penny
    earned.")
Write a Comment
User Comments (0)
About PowerShow.com