简单的银行账户管理--------继承性、super、方法重写的实际应用

这篇博客介绍了如何使用Java编程实现银行账户类`Account`,包括余额查询、月利率计算、存款和取款功能。然后通过继承`Account`创建`CheckACCOUNT`类,增加了信用卡透支功能。在`CheckACCOUNT`中重写了`withdraw`方法,允许在余额不足时透支,但不超过预设的透支额度。通过示例测试类展示了类的使用和透支逻辑。
摘要由CSDN通过智能技术生成

今天主要学习的内容是:继承性以及super关键字的应用,并且根据题目要求写了两个简单的类来运用继承性。
主要的功能是:实现银行账户的余额查询、月利率查询、取钱(包括了信用卡的透支功能)、以及存钱操作。
具体的代码如下:
1、Account类:

public class Account {

	private int id;//账户
	private double balance;//余额
	private double annuallnterestRate;//年利率
	//构造器
	public Account(int id, double balance, double annuallnterestRate) {
		super();
		this.id = id;
		this.balance = balance;
		this.annuallnterestRate = annuallnterestRate;
	}
	//下面是方法
	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 getAnnuallnterestRate() {
		return annuallnterestRate;
	}
	public void setAnnuallnterestRate(double annuallnterestRate) {
		this.annuallnterestRate = annuallnterestRate;
	}
	//返回月利率
	public double getMonthlyInterest() {
		return annuallnterestRate / 12;
	}
	//取钱
	public void withdraw(double amount) {
		if(balance >= amount) {
			balance -= amount;
			return;
		}
		System.out.println("余额不足");
	}
	//存钱
	public void deposit(double amount) {
		if(amount > 0) {
			balance += amount;
		}
	}
	
}

2、Account类的测试类:(只用这里的前两个类可以实现基本的,不包含透支功能的银行账户管理功能)

public class AccountTest {

	public static void main(String[] args) {
		
		Account acct = new Account(1122,20000,0.045);
		
		acct.withdraw(30000);
		System.out.println("您的账户余额为:"+acct.getBalance());
		acct.withdraw(2500);
		System.out.println("您的账户余额为:"+acct.getBalance());
		acct.deposit(3000);
		System.out.println("您的账户余额为:"+acct.getBalance());
		
		System.out.println("月利率为:"+(acct.getMonthlyInterest()*100)+"%");
		
		
	}
}

3、CheckAccount类:(Account类的子类)

public class CheckACCOUNT extends Account{

	private double overdraft;
	
	public CheckACCOUNT(int id, double balance, double annuallnterestRate,double overdraft) {
		super(id, balance, annuallnterestRate);
		this.overdraft = overdraft;		
	}
	
	
	public double getOverdraft() {
		return overdraft;
	}


	public void setOverdraft(double overdraft) {
		this.overdraft = overdraft;
	}


	//重写withdraw方法
	@Override
	public void withdraw(double amount) {
		if(getBalance() >= amount) {
			//余额足够的情况下
			/*
			 * 方式一:
			 * //父类中有setBalance时 
			 * setBalance( getBalance()- amount);
			 */
			//方式二:
			//因为父类中的withdraw可以实现余额的更新
			super.withdraw(amount);
			//方式三:更改Account的权限为public或者protected
			
		}else if(overdraft >= amount - getBalance()) {
			//透支额度够的情况下
			overdraft -= (amount - getBalance());
			setBalance(0);
			//或者将这句话改为:
			//super.withdraw(getBalance);
		}else {
			System.out.println("超过可透支限额!");
		}
		
		
	}
	
	
	
}

4、CheckAccount类的测试类(用这个类的话,就不需要Account类的测试类了)

public class CheckaAccounntTest {

	public static void main(String[] args) {
	
		CheckACCOUNT acct = new CheckACCOUNT(1122, 20000, 0.045, 5000);
		
		acct.withdraw(5000);
		System.out.println("您的账户余额为:"+acct.getBalance());
		System.out.println("您的可透支额度为:"+acct.getOverdraft());
		acct.withdraw(18000);
		System.out.println("您的账户余额为:"+acct.getBalance());
		System.out.println("您的可透支额度为:"+acct.getOverdraft());
		acct.withdraw(3000);
		System.out.println("您的账户余额为:"+acct.getBalance());
		System.out.println("您的可透支额度为:"+acct.getOverdraft());
		
		
	}
}

行百里者半九十,加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值