您的位置:首页 > 编程语言 > Java开发

JAVA面对对象---构造器,private,this,封装实际应用题 银行存钱取款问题

2020-06-30 11:33 155 查看

(1) 创建一个 Customer ,名字叫 Jane Smith, 他有一个账号为 1000,余额为 2000 元,
年利率为 1.23% 的账户。
(2) 对 Jane Smith 操作。
存入 100 元,再取出 960 元。再取出 2000 元。
打印出 Jane Smith 的基本信息

*成功存入 :100.0
成功取出:960.0
余额不足,取款失败
Customer [Smith, Jane] has a account: id is 1000, annualInterestRate is 1.23%, balance is
1140.0

先创建class文件Account.java

//Account账单类
public class Account{
private int id;//账户
private double balance;//余额
private double annualinterestRate;//年利率

public Account(int id,double balance,double annualinterestRate) {
this.balance=balance;
this.id=id;
this.annualinterestRate=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;
}
//取钱——在提款方法 withdraw 中,需要判断用户余额是否能够满足提款数额的要求,如果不
//能,应给出提示。
public void withdraw (double amount) {
if(balance<amount) {
System.out.println("余额不足,取款失败");
return;
}else {
balance -=amount;
System.out.println("成功取款:"+amount+"元");
}
}
//存钱
public void deposit (double amount) {
if(amount>0) {
balance +=amount;
System.out.println("成功存入"+amount+"元");
}else {
System.out.println("存款不能为负数");
return;
}

}
}

创建class文件Customer.java文件

public class Customer {
private String Name;//姓名
private Account account;

public Customer(String name) {
this.Name=name;

}

public Account getAccount() {
return account;
}

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

public String getName() {
return Name;
}

}

创建class文件CustomerText.java文件作为测试

public class CustomerText {
public static void main(String[] args) {
/**
* 构造器名称和类同名,包括大小写,他是为了创建对象并初始化对象的方法
*/
//用户表单创建
Customer text=new Customer("jane smith");
//银行表单创建
Account text1 =new Account(1000, 2000, 0.0123);
//--------------------------------------------------------------------------------------
/**
* new的text对象,在text地址指向的堆中Account引用类创建的属性开始是null,现在这个属性赋给了
* 和text1相同的地址值,所以这个属性就指向text1在堆空间所指向的区域
*/
text.setAccount(text1);
//存入100,再取出960,再取出2000
//通过用户层面来实施操作,而 text1.deposit()相当于银行层面直接调用
text.getAccount().deposit(100);
text.getAccount().withdraw(960);
text.getAccount().withdraw(2000);
System.out.println("客户"+" ["+text.getName()+"] "+"账户ID :"+text.getAccount().getId()
+",年利息为 "+text.getAccount().getAnnualinterestRate()*100+"%"+",账户余额为 "+text.getAccount().getBalance());
System.out.println("----------------------------------");
//System.out.println(text.getAccount());这个输出地址,因为此对象属性已经被赋给了地址值
}
}

实际打印效果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐