2012-01-14 2 views
0

Итак, у меня много проблем, я все еще изучаю Java, и моя книга задала мне задачу, которую я нахожу общей в сети, часть, за которую я застрял, - это .. .Метод поиска и наследования Confusion

Я должен создать программу банковского счета, владельцу счета предоставляется сберегательный счет (с процентной ставкой и без овердрафта), а также расчетный счет (который имеет штраф свыше 100 фунтов стерлингов и без процентов) ,

Я еще не реализую овердрафт, и только на полпути к получению функции снятия и депозита, но мой вопрос с интересом, я определил в своем суперклассе баланс сберегательного счета и баланс текущего счета, поэтому при работе мой интерес к классу сберегательных счетов я не могу ссылаться на баланс, поскольку я сделал его частным. Я пытаюсь использовать метод set.name, но я явно делаю это неправильно ....

Большая улыбка и благодарность за любого, кто может помочь или дать совет!

Superclass выглядит следующим образом:

public class BankDetails 
    { 
     private String customer; 
     private String accountno; 
     private double savebalance; 
     private double checkbalance; 


//Constructor Methods 

public BankDetails(String customerIn, String accountnoIn, double savebalanceIn, double checkbalanceIn) 
     { 
      customer = customerIn; 
      accountno = accountnoIn; 
      savebalance = savebalanceIn; 
      checkbalance = checkbalanceIn; 
     } 

     // Get name 
     public String getcustomername() 
     { 
      return (customer); 
     } 

     // Get account number 
     public String getaccountnumber() 
     { 
      return (accountno); 
     } 

     public double getcheckbalanceamount() 
     { 
      return (checkbalance); 
     } 

     public double getsavebalanceamount() 
     { 
      return (savebalance); 
     } 


public void savewithdraw(double savewithdrawAmountIn) 

    { 
     savebalance = savebalance - savewithdrawAmountIn; 

    } 

public void checkwithdraw(double checkwithdrawAmountIn) 

    { 
     checkbalance = checkbalance - checkwithdrawAmountIn; 

    } 


public void savedeposit(double savedepositAmountIn) 

    { 
     savebalance = savebalance - savedepositAmountIn; 

    } 

public void checkdeposit(double checkdepositAmountIn) 

    { 
     checkbalance = checkbalance - checkdepositAmountIn; 

    } 




    } // End Class BankDetails 

Sub класса выглядит следующим образом:

import java.util.*; 

public class Savings extends BankDetails 
    { 

     private String saveaccount; 
     private double interest; 


     public Savings(String customerIn, String accountnoIn, float interestIn, 
     String saveaccountIn, double savebalanceIn) 
     { 


      super (customerIn, accountnoIn, savebalanceIn, interestIn); 


      saveaccount = saveaccountIn; 
      interest = interestIn; 

     } 


     public String getsaveaccountno() 
     { 
      return (saveaccount); 
     } 

     public double getinterestamount() 
     { 
      return (interest); 
     } 


     public void interestamount(String[] args) 

     { 
      BankDetails.getsavebalanceamount(savebalance); 
      interest = (savebalance/100) * 1.75; 


     } 


     } 

ответ

3

Используйте getSaveBalance() метод суперкласса для доступа баланс (который подозрительно-именем, так как у вас есть класс сберегательного счета, но сохраняйте баланс в другом месте).

(В настоящее время это getsavebalanceamount(), я предполагаю, что переименование держать с Java конвенций.)


Я бы рекомендовал использовать последовательную верблюжьего при именовании методов получения и установки, например, getInterestAmount(), getSaveAccountNo(), и т.д. .

Я рекомендую против комментирования простых геттеров/сеттеров, но если вы делаете, использовать соглашение Javadoc, например:

/** Returns current savings account balance. */ 
public double getSaveBalance() { ... etc ... } 

Я также рекомендую избегать ненужных скобок, как в настоящее время в ваших добытчиками, например .:

public double getSaveBalance() { 
    return saveBalance; // No parens required. 
} 
+0

Ok спасибо, подозрительно название ?? Это было то, о чем я не знал, делать ли так же, как вы думаете, я должен поместить баланс и контрольный баланс в соответствующие подклассы, а также методы снятия и сдачи в них с ними, я чувствовал, что лучше держать в суперкартах поскольку они являются вычислениями, которые будут выполняться для обоих подклассов. (Я все еще изучаю java, а также делая вещи логичным lol) – Phil

+0

Извините, что я все еще не уверен, что понимаю, я думал, что использую метод getSaveBalance()моего суперкласса в моем подклассе? общественный недействительный interestamount (String [] арг) { BankDetails.getsavebalanceamount (savebalance); interest = (savebalance/100) * 1.75; } – Phil

+0

@Phil 'savebalance' - это не то же самое, что' getSaveBalance() '. Один - переменная, объявленная 'private' в суперклассе, одна - метод, объявленный' public'. –

2

Я предлагаю вам сделать что-то вроде этого,

interface Account{ 
    int getAccountNumber(); 
    float getBalance(); 
} 

public class SavingAccount implements Account, Interest{ 
    int accountNumber; 
    public int getAccountNumber(){ 
    return accountNumber; 
    } 
    float balance; 
    public float getBalance(){ 
    return balance; 
    } 
    float savingInterestRate; 
    public float getInterestRate(){ 
    return savingInterestRate; 
    } 
} 

public class CheckingAccount implements Account, OverDraft{ 
    int accountNumber; 
    public int getAccountNumber(){ 
    return accountNumber; 
    } 
    float balance; 
    public float getBalance(){ 
    return balance; 
    } 
} 

interface Interest{ 
    float getInterestRate(); 
} 

interface OverDraft{ 
.... 
} 
Смежные вопросы