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());这个输出地址,因为此对象属性已经被赋给了地址值 } }
实际打印效果如下:
相关文章推荐
- Java基础-07.总结private,this,封装,static,成员方法变量,局部变量匿名对象
- java学习7:银行存取款的例子,主要涉及对象同步问题,类似于数据库存取款,数据一致性问题
- Java基础-07.总结private,this,封装,static,成员方法变量,局部变量匿名对象
- 重踏学习Java路上_Day07(成员与局部变量,形参,匿名对象,封装,private,this,构造与成员方法,static)
- JAVA基础再回首(四)——面向对象思想、类与对象、成员/局部变量、匿名对象、封装、private、this、构造方法
- JAVA--封装一类对象,功能是随机产生一个2000年后的年份,并输出该年2月的日历页,需处理闰年的问题
- 黑马程序员_JAVA笔记05 ——面向对象1(类与对象关系、封装、构造函数、this)
- 用JAVA中的多线程示例银行取款问题
- 8、java高级面向对象-重载、构造器重载、初始化块、this、super、对象构造和初始化分析、覆盖、toString
- Java基础之面向对象(一)--特性、类和对象关系、this、private
- Java形参、匿名对象、private关键字、this关键字相关问题
- Java中封装和this()调用构造方法以及对象作为参数使用知识点
- java面向对象-封装private
- 7 面向对象(成员变量和局部变量的区别,类作为形式参数的问题,匿名对象,封装,private关键字,this关键字,构造方法,类的初始化过程,static关键字)
- 《Thinking in Java》——构造器是private时如何创建对象?
- java 银行存取款模型的线程同步问题
- JAVA基础: 面对对象封装、继承的理解,方法的重载和重写、抽象类、访问修饰符
- 用JAVA中的多线程示例银行取款问题
- java 线程同步问题之银行存取款问题
- Java基础之面向对象(一)--特性、类和对象关系、this、private