scala的伴生对象

伴生对象
在Java中,经常会有一些类,同时有实例成员又有静态成员。
例如:
java public class CustomerService { private static String SERVICE_NAME = "CustomerService"; public void save() { // 保存客户 System.out.println(SERVICE_NAME + ":保存客户"); } public static void main(String[] args) { new CustomerService().save(); } }
在这里插入图片描述
在scala中,要实现类似的效果,可以使用伴生对象来实现。
我们还可以使用伴生对象来实现快速创建对象,例如:
scala // 无需使用new就可以快速来创建对象 val a = Array(1,2,3) val b = Set(1,2,3)
定义伴生对象
一个class和object具有同样的名字。这个object称为伴生对象,这个class称为伴生类
伴生对象必须要和伴生类一样的名字
伴生对象和伴生类在同一个scala源文件中
伴生对象和伴生类可以互相访问private属性
示例
示例说明
编写一个CustomerService类,有一个save方法,打印
scala 服务类名称:保存客户
编写一个CustomerService伴生对象,定义一个私有变量,用于保存服务类名称
创建CustomerService对象,调用save方法
参考代码
scala object _11ObjectDemo { class CustomerService { def save() = { println(s"${CustomerService.SERVICE_NAME}:保存客户") } } // CustomerService的伴生对象 object CustomerService { private val SERVICE_NAME = "CustomerService" } def main(args: Array[String]): Unit = { val customerService = new CustomerService() customerService.save() } }
Private[This]访问权限
如果某个成员的权限设置为private[this],表示只能在当前类中访问。伴生对象也不可以访问
示例
示例说明
定义一个Person类,包含一个name字段
定义Person类的伴生对象,定义printPerson方法
测试伴生对象是否能访问private[this]权限的成员
示例代码
``scala class Person(private[this] var name:String)
object Person { def printPerson(person:Person): Unit = { println(person.name) } }
def main(args: Array[String]): Unit = { val person = new Person(“张三”) Person.printPerson(person) } ```
上述代码,会编译报错。但移除掉[this]就可以访问了

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值