title: GNU Smalltalk - Inheritance and Multiple Parameter Methods/Constructors
body: <p>Say I'm trying to translate the below Java classes to GNU Smalltalk:</p>
  
  <pre><code>public abstract class Account {
  
      protected String number;
      protected Customer customer;
      protected double balance;
  
      public abstract void accrue(double rate);
  
      public double balance() {
          return balance;
      }
  
      public void deposit(double amount) {
          balance += amount;
      }
  
      public void withdraw(double amount) {
          balance -= amount;
      }
  
      public String toString() {
          return number + ":" + customer + ":" + balance;
      }
  }
  
  public class SavingsAccount extends Account {
  
      private double interest = 0;
  
      public SavingsAccount(String number, Customer customer, double balance) {
          this.number = number;
          this.customer = customer;
          this.balance = balance;
      }
  
      public void accrue(double rate) {
          balance += balance * rate;
          interest += interest * rate;
      }
  
  }
  </code></pre>
  
  <p>I'm struggling to understand how I can write methods/constructors that take multiple parameters. Here's what I've got so far:</p>
  
  <pre><code>Object subclass: Account [
  
      |number customer balance|
  
      balance [
          ^balance
      ]
  
      deposit: amount [
           balance := balance + amount
      ]
  
      withdraw: amount [
          balance := balance - amount
      ]
  
      asString [
          ^number asString, ':', customer asString, ':', balance asString
      ]
  
  ]
  
  Account subclass: SavingsAccount [
  
      |interest|
  
      SavingsAccount class [
          new [ "add some sort of support for multiple arguments?"
             "call init"
          ]
      ]
  
      init [ "add some sort of support for multiple arguments?"
           interest := 0.
           balance := accountBalance.
           customer := accountCustomer.
           number := accountNumber
      ]
  
      accrue: rate [
          balance := balance + (balance * rate).
          interest := interest + (interest * rate)
      ]
  
  ]
  </code></pre>
  
  <p>A few questions:</p>
  
  <ol>
  <li>How can I make Account an abstract class in Smalltalk?</li>
  <li>Am I correct in assuming all the Account instance variables are just accessible by name in the SavingsAccount Class?</li>
  <li>How can I implement something that mimics the multiple parameter constructor in the Java SavingsAccount Class?</li>
  </ol>