KaiquanMah's picture
constructor-super, new methods2-3
36a8302 verified
raw
history blame
3.49 kB
The program defines a class 'Wallet', which, in addition to the
constructor and
the balance detection method,
has the method addMoney(double money), which can be used to add money to the wallet.
Write the class 'BetterWallet', which inherits the class 'Wallet'.
In addition to the constructor, the new class has 2 overloaded new versions of the method addMoney:
addMoney(int euros, int cents), which gets the euros and cents added separately
addMoney(String amount), which receives the amount of money as a string.
An example to illustrate how the class works:
public static void main(String[] args) {
BetterWallet wallet = new BetterWallet(10);
System.out.println(wallet.getMoney());
wallet.addMoney(5.0);
System.out.println(wallet.getMoney());
wallet.addMoney(2, 75);
System.out.println(wallet.getMoney());
wallet.addMoney("3.50");
System.out.println(wallet.getMoney());
}
Program outputs:
10.0
15.0
17.75
21.25
import java.util.Random;
public class Test{
public static void main(String[] args){
final Random r = new Random();
double[] desit = {0.25, 0.5, 0.75, 0.99, 0.65, 0.30};
System.out.println("Testing class BetterWallet...");
BetterWallet bw = new BetterWallet(r.nextInt(100) + 1);
// testing for inheritance
Wallet wallet = (Wallet) bw;
System.out.println("Object created!");
System.out.println("Money now: " + bw.getMoney());
double money = r.nextInt(100) + 1 + desit[r.nextInt(desit.length)];
System.out.println("Adding " + money);
bw.addMoney(money);
System.out.println("Money now: " + bw.getMoney());
int euros = r.nextInt(100) + 1;
int cents = r.nextInt(99) + 1;
System.out.println("Adding " + euros + " euros and " + cents + " cents");
bw.addMoney(euros, cents);
System.out.println("Money now: " + bw.getMoney());
euros = r.nextInt(100) + 1;
cents = r.nextInt(99) + 1;
String increment = euros + "." + cents;
System.out.println("Adding \"" + increment + "\"");
bw.addMoney(increment);
System.out.println("Money now: " + bw.getMoney());
}
}
class Wallet {
protected double money;
public Wallet(double money) {
this.money = money;
}
public void addMoney(double amount) {
money += amount;
}
public double getMoney() {
return money;
}
}
//ADD
class BetterWallet extends Wallet {
//constructor1
public BetterWallet(double money) {
super(money);
}
// method2
public void addMoney(int euros, int cents) {
// dividing by 100 can return 0 when it is less than 100
// -> because 'cents/100.0' would be an int
// this.money += euros + cents/100;
// divide by 100.0 for 'cents/100.0' to become a double
this.money += euros + cents/100.0;
}
// method3
public void addMoney(String amount) {
// string to double
// this.money += Integer.parseInt(amount);
this.money += Double.parseDouble(amount);
}
}
Testing class BetterWallet...
Object created!
Money now: 100.0
Adding 3.75
Money now: 103.75
Adding 62 euros and 57 cents
Money now: 166.32
Adding "13.2"
Money now: 179.51999999999998