Java - простой (для всех, кроме меня) метод - наследование - PullRequest
0 голосов
/ 17 января 2012

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

Моя проблема в том, что я хочу, чтобы текущий счет был неспособен превысить лимит овердрафта, а сберегательный счет был не в состоянии опуститься ниже 0, но не могу решить, как? мой код пока выглядит следующим образом:

СУПЕРКЛАСС (банковский счет):

public class BankAccount
    {
        protected String CustomerName;
        protected String AccountNumber;
        protected float Balance;


//Constructor Methods

 public BankAccount(String CustomerNameIn, String AccountNumberIn, float BalanceIn)
        {
            CustomerName = CustomerNameIn;
            AccountNumber = AccountNumberIn;
            Balance = BalanceIn;

        }

      // Get  name
      public String getCustomerName()
        {
            return (CustomerName);
        }

      // Get account number
      public String getAccountNumber()
        {
            return (AccountNumber);
        }

       public float getBalance()
        {
            return (Balance);
        }


        public void Withdraw(float WithdrawAmountIn)
       {  
           if(WithdrawAmountIn < 0)
                System.out.println("Sorry, you can not withdraw a negative amount, if you wish to withdraw money please use the withdraw method");
           else
                Balance = Balance - WithdrawAmountIn;
       }

        public void Deposit(float DepositAmountIn)
       {
           if(DepositAmountIn < 0)
                System.out.println("Sorry, you can not deposit a negative amount, if you wish to withdraw money please use the withdraw method");
           else 
           Balance = Balance + DepositAmountIn;
       }


    } // End Class BankDetails

ПОДКЛАСС (Сберегательный счет):

public class SavingsAccount extends BankAccount
  {   

      private float Interest;

      public SavingsAccount(String CustomerNameIn, String AccountNumberIn, float InterestIn, float BalanceIn)
        {
            super (CustomerNameIn, AccountNumberIn, BalanceIn);
            Interest = InterestIn;
        }


      public float getInterestAmount()
       {
           return (Interest);
       }

      public float newBalanceWithInterest()
       {  
           Balance = (getBalance() + (getBalance()  * Interest / 100) );

           return (Balance);
       }

       public void SavingsOverdraft()
       {
            if( Balance < 0)
                System.out.println("Sorry, this account is not permitted to have an overdraft facility");
       }

   }

ПОДКЛАСС (Проверка счета):

public class CheckingAccount extends BankAccount
  {
      private float Overdraft;


      public CheckingAccount(String CustomerNameIn, String AccountNumberIn, float BalanceIn, float OverdraftIn)
        {

            super (CustomerNameIn, AccountNumberIn, BalanceIn);

            Overdraft = OverdraftIn;
        }

       public float getOverdraftAmount()
       {
           return(Overdraft);
       }

      public void setOverdraft()
        {
            if (Balance < Overdraft)
                System.out.println("Sorry, the overdraft facility on this account cannot exceed £100");

       }
    }

Большое спасибо за любые советы и помощь!

Ответы [ 2 ]

2 голосов
/ 17 января 2012

Добавьте getOverdraftAmount () к базовому классу:

public int getOverdraftAmount() {
    return 0;
}

Затем переопределите этот метод в подклассах аккаунта, которые разрешают овердрафты. Затем пересмотрите свою логику вывода средств, чтобы учесть, что лимит овердрафта может быть не нулевым.

public void Withdraw(float WithdrawAmountIn)
   {  
       if(WithdrawAmountIn < 0)
            System.out.println("Sorry, you can not withdraw a negative amount, if you wish to withdraw money please use the withdraw method");
       else if (Balance - WithdrawAmountIn < -getOverdraftAmount()) {
            System.out.println("Sorry, this withdrawal would exceed the overdraft limit");
       else 
            Balance = Balance - WithdrawAmountIn;
   }
0 голосов
/ 17 января 2012

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

ПОДКЛАСС (Сберегательный счет):

public class SavingsAccount extends BankAccount
  {   

      private float Interest;

      public SavingsAccount(String CustomerNameIn, String AccountNumberIn, float InterestIn, float BalanceIn)
        {
            super (CustomerNameIn, AccountNumberIn, BalanceIn);
            Interest = InterestIn;
        }


      public float getInterestAmount()
       {
           return (Interest);
       }

      public float newBalanceWithInterest()
       {  
           Balance = (getBalance() + (getBalance()  * Interest / 100) );

           return (Balance);
       }

       public void SavingsOverdraft()
       {
            if( Balance < 0)
                System.out.println("Sorry, this account is not permitted to have an overdraft facility");
       }

       public void Withdraw(float WithdrawAmountIn)
       {  
           if(WithdrawAmountIn < 0)
                System.out.println("Sorry, you can not withdraw a negative amount, if you wish to withdraw money please use the withdraw method");
           else if (WithdrawAmountIn>Balance)
                System.out.println("Sorry, you don't have this much in your account.");
           else
                Balance = Balance - WithdrawAmountIn;
       }

   }

ПОДКЛАСС (Проверочный счет):

public class CheckingAccount extends BankAccount
  {
      private float Overdraft;


      public CheckingAccount(String CustomerNameIn, String AccountNumberIn, float BalanceIn, float OverdraftIn)
        {

            super (CustomerNameIn, AccountNumberIn, BalanceIn);

            Overdraft = OverdraftIn;
        }

       public float getOverdraftAmount()
       {
           return(Overdraft);
       }

      public void setOverdraft()
        {
            if (Balance < Overdraft)
                System.out.println("Sorry, the overdraft facility on this account cannot exceed £100");

       }
        public void Withdraw(float WithdrawAmountIn)
       {  
           if(WithdrawAmountIn < 0)
                System.out.println("Sorry, you can not withdraw a negative amount, if you wish to withdraw money please use the withdraw method");
           else if (Balance-WithdrawAmountIn<getOverdraftAmount()
                System.out.println("Sorry, you cannot withdraw this much");
           else
                Balance = Balance - WithdrawAmountIn;
       }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...