Herencia orientada a objetos (media) de clases experimentales, super

1. Escriba una cuenta simulada llamada Cuenta . Las propiedades y métodos de esta clase se muestran en la siguiente figura. Los atributos incluidos en esta clase:
Cuenta ID , el balance de equilibrio , la tasa de interés anual tasaInteresAnual ; métodos incluyen: métodos de acceso ( captador y
colocador método), el retorno mensual método de tasa de interés getMonthlyInterest () , método de retiro retirar () , método de depósito
depósito ()
Escriba un programa de usuario para probar la clase Account . En el programa de usuario, cree un número de cuenta 1122 , un saldo de 20000 ,
Tasa de interés anual del 4,5% del objeto de la Cuenta . Usar la retirada método para retirar 30.000 yuanes e imprimir el equilibrio.
A continuación, utilice la retirada método para retirar 2.500 yuanes, utilice el depósito método para depositar 3.000 yuanes, y luego imprimir el equilibrio y el interés mensual
Velocidad.
 
2. Cree una subclase de la clase de cuenta , CheckAccount, que representa una cuenta sobregirable, y se define un atributo en la cuenta.
sobregiro significa límite de sobregiro. Anule el método de retiro en la clase CheckAccount , el algoritmo es el siguiente:
Si (monto del retiro < saldo de la cuenta),
Puede retirar directamente
Si (monto del retiro > saldo de la cuenta),
Calcule la cantidad de sobregiro
Determine si el sobregiro es suficiente para cubrir la necesidad de sobregiro, si es así
Modifique el saldo de la cuenta a 0 para reducir el monto del sobregiro
si no es posible
Indicar al usuario que supere el límite de sobregiro

 

Requisitos: escriba un programa de usuario para probar la clase CheckAccount . En el programa de usuario, cree una cuenta como 1122 , Yu
Objeto CheckAccount con una cantidad de 20.000 , una tasa de interés anual del 4,5% y un límite de descubierto de 5.000 yuanes .
Usar la retirada método para retirar 5.000 yuanes, e imprimir el saldo de la cuenta y el sobregiro.
A continuación, utilice la retirada método para retirar 18.000 yuanes, e imprimir el saldo de la cuenta y la cantidad de sobregiro.
A continuación, utilice la retirada método para retirar 3.000 yuanes, e imprimir el saldo de la cuenta y el sobregiro.
rápido:
( 1 ) El método de construcción de la subclase CheckAccount necesita heredar los tres atributos de la clase principal y los atributos propios de la subclase.
Inicialización del departamento.
( 2 ) El saldo del atributo de la cuenta de la clase principal se establece en privado , pero en el retiro de la clase secundaria CheckAccount
El método necesita modificar su valor, por lo que el atributo de balance de la clase padre debe modificarse y definirse como protegido .
 
responder:
import java.util.Scanner;
public class Customer {
    private String firstName;
    private String lastName;
    private Account account;

    public Customer(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public Account getAccount() {
        return account;
    }

    public void setAccount(Account account) {
        this.account = account;
    }

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        Customer c=new Customer("Jane","Smith");
        c.account=new CheckAccount(1122,20000,0.045,5000);

        c.account.withdraw(5000);
        c.account.withdraw(18000);
        c.account.withdraw(3000);
    }

}

class CheckAccount extends Account{
    private int overdraft;

    public CheckAccount(int id, double balance, double annualInterestRate,int overdraft) {
        super(id, balance, annualInterestRate);
        this.overdraft = overdraft;
    }
    public void withdraw(double amount){
        if (balance-amount<=0){
            if (amount-balance<overdraft){
                overdraft-=(amount-balance);
                balance=0;
                System.out.println("取款"+amount+"成功!");
                System.out.println("余额:"+balance);
                System.out.println("可透支额度:"+overdraft);
                System.out.println();
            }
            else {
                System.out.println("取款"+amount+"失败!");
                System.out.println("超过可透支额度!");
                System.out.println("余额:"+balance);
                System.out.println("可透支额度:"+overdraft);
                System.out.println();

            }
        }
        else {
            balance-=amount;
            System.out.println("取款"+amount+"成功!");
            System.out.println("余额为:"+balance);
            System.out.println("可透支额度:"+overdraft);
            System.out.println();
        }
    }

}

 class Account {
     protected int id;
     protected double balance;
     protected double annualInterestRate;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }

    public double getAnnualInterestRate() {
        return annualInterestRate;
    }

    public void setAnnualInterestRate(double annualInterestRate) {
        this.annualInterestRate = annualInterestRate;
    }

    public  Account(){}
    public Account(int id, double balance, double annualInterestRate) {
        this.id = id;
        this.balance = balance;
        this.annualInterestRate = annualInterestRate;
    }
    public void withdraw (double amount){
        if (balance-amount<0){
            System.out.println("余额不足!取款失败!");
            System.out.println("余额为:"+balance);
        }
        else {
            balance-=amount;
            System.out.println("取款"+amount+"成功!");
            System.out.println("余额为:"+balance);
        }
    }
    public void deposit (double amount){
        balance+=amount;
        System.out.println("存款"+amount+"成功!");
        System.out.println("余额为:"+balance);
    }


}
取款5000.0成功!
余额为:15000.0
可透支额度:5000

取款18000.0成功!
余额:0.0
可透支额度:2000

取款3000.0失败!
超过可透支额度!
余额:0.0
可透支额度:2000

 

Supongo que te gusta

Origin blog.csdn.net/qq_41048982/article/details/109359500
Recomendado
Clasificación