Scala 的例题:银行账户钱存取功能

private 方法

Scala 复制代码
​
package Test22
// 银行账户
class BankAccount(private var balance:Int){
  def showMoney():Unit={
    println(s"现在的余额是:${balance}")
  }
  def deposit(money:Int):Unit={
    balance += money
  }
  def withdraw(money:Int):Unit={
    if(money <= balance)
      balance -= money
  }
  // 转账
  def transfer(to:BankAccount,money:Int):Unit={
    // A  --200--> B
    // A  减少 B 增加
  }
}

object Test22_1 {
  def main(args: Array[String]): Unit = {
    var xiaoming=new BankAccount(0)
    var xiaohua = new BankAccount(100)
    //存入 200
    xiaohua.deposit(200)
    //取出 150
    xiaohua.withdraw(1500)

    //转账给小明
    xiaohua.transfer(xiaohua,100)

    xiaohua.showMoney()
    xiaoming.showMoney()
  }
}

​
复制代码
private[this]方法
Scala 复制代码
package Test22
// 银行账户
class BankAccount(private[this] var balance:Int){
  def showMoney():Unit={
    println(s"现在的余额是:${balance}")
  }
  def deposit(money:Int):Unit={
    balance += money
  }
  def withdraw(money:Int):Unit={
    if(money <= balance)
      balance -= money
  }
  // 转账:把当前的账户的余额转出money给to这个账户
  def transfer(to:BankAccount,money:Int):Unit={
    // A  --200--> B
    // A  减少 B 增加
    if(money <= balance){
      //把自己减少
      balance -= money
      //把对方增加
//      to.balance += money
      to.deposit(money)
    }
  }
//  def test(to:BankAccount):Unit={
//    to.balance=0
//  }
}

object Test22_1 {
  def main(args: Array[String]): Unit = {
    var xiaoming=new BankAccount(0)
    var xiaohua = new BankAccount(100)
    //存入 200
    xiaohua.deposit(200)
    //取出 150
    xiaohua.withdraw(1500)

    //转账给小明
    xiaohua.transfer(xiaohua,100)

    xiaohua.showMoney()
    xiaoming.showMoney()
//    println(xiaohua.balance)
  }
}

Scala 的控制方法作用域有5种:

(1)默认访问权限

(2)protected 访问权限

(3)private 访问权限

(4)private[this]访问权限

(5)private[package]访问权限

Scala 复制代码
package Test22{

  class C() {
    private[p2] def test(): Unit = {
      println("test")
    }
  }

  object Test22_3 {
    def main(args: Array[String]): Unit = {
      var c1=new C()
      c1.test()
    }
  }
}
相关推荐
小邓睡不饱耶6 天前
使用Scala实现手机号码归属地查询系统
开发语言·windows·scala
强化实验室15 天前
如何设计基于吖啶生物素,Acridinium-Biotin的高效生物检测体系?
flask·scala·pyqt·fastapi·web3.py
m0_7482546622 天前
Perl 变量类型
spark·scala·perl
是阿威啊1 个月前
【用户行为归因分析项目】- 【企业级项目开发第五站】数据采集并加载到hive表
大数据·数据仓库·hive·hadoop·spark·scala
是阿威啊1 个月前
【用户行为归因分析项目】- 【企业级项目开发第四站】模拟三类用户行为数据上传到Hadoop
大数据·hadoop·分布式·sql·scala
今天没有盐1 个月前
Python字符串操作全解析:从基础定义到高级格式化
后端·scala·编程语言
是阿威啊1 个月前
【用户行为归因分析项目】- 【企业级项目开发第一站】项目架构和需求设计
大数据·hive·hadoop·架构·spark·scala
代码于老总1 个月前
【Scala 技巧】用隐式类给 String “开挂”:一行代码实现手机号 / 身份证号校验
scala
scala舔狗汪1 个月前
scala的隐式对象和隐式类
scala
是阿威啊1 个月前
【maap-analysis】spark离线数仓项目完整的开发流程
大数据·分布式·spark·scala