Scala进阶_伴生对象
伴生对象
在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中,要实现类似的效果,可以使用伴生对象来实现。
我们还可以使用伴生对象来实现快速创建对象,例如:
// 无需使用new就可以快速来创建对象
val a = Array(1,2,3)
val b = Set(1,2,3)
定义伴生对象
一个class和object具有同样的名字。这个object称为伴生对象,这个class称为伴生类
- 伴生对象必须要和伴生类一样的名字
- 伴生对象和伴生类在同一个scala源文件中
- 伴生对象和伴生类可以互相访问private属性
示例
示例说明
编写一个CustomerService类,有一个save方法,打印
服务类名称:保存客户
编写一个CustomerService伴生对象,定义一个私有变量,用于保存服务类名称
创建CustomerService对象,调用save方法
参考代码
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]权限的成员
示例代码
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]就可以访问了
Scala进阶_伴生对象相关推荐
- 好程序员大数据学习路线分享scala单列和伴生对象
好程序员大数据学习路线分享scala单列和伴生对象 scala单例 object SingletonDemo { def main(args: Array[String]): Unit = { val ...
- scala中的伴生对象,
package bms_entity.data/**** @Date 2021/8/23 11:12* scala中的伴生对象,* scala中把同一个源文件中相同名称的object结构称之为clas ...
- Scala编程之伴生对象
伴生对象是scala中静态的概念 Scala语言是完全面向对象(万物皆对象)的语言,所以并没有静态的操作(即在 Scala中没有静态的概念).但是为了能够和Java语言交互(因为Java中有静态概念) ...
- Scala进阶_函数式编程(过滤丶排序丶分组丶聚合)
过滤 | filter 过滤符合一定条件的元素 定义 方法签名 def filter(p: (A) ⇒ Boolean): TraversableOnce[A] 方法解析 filter方法 API 说 ...
- 四, Scala 伴生对象, 特质
文章目录 四, Scala 伴生对象和伴生类 4.1 单例对象和伴生对象 4.1.1 什么是单例对象? 4.1.2 如何使用Scala的伴生对象和伴生类来实现单例模式? 4.1.2 apply方法 4 ...
- Scala中Object和Class区别(伴生类和伴生对象)
文章目录 一,介绍 二,类Class 2.1 类定义 2.2 构造器 1.基本语法 2.构造器参数 2.3 私有成员和Getter/Setter语法 三,单例对象Object 四,伴生对象和伴生类介绍 ...
- scala快速入门系列【伴生对象】
本篇作为scala快速入门系列的第二十篇博客,为大家带来的是关于伴生对象的内容. 文章目录 伴生对象 定义伴生对象 private [this] 访问权限 apply 方法 伴生对象 在Java中,经 ...
- Scala进阶之路-面向对象编程之类的成员详解
Scala进阶之路-面向对象编程之类的成员详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Scala中的object对象及apply方法 1>.scala 单例对象 ...
- 大数据编程语言 Scala 进阶篇
作者:幻好 来源: 恒生LIGHT云社区 Scala 系列: 2小时速学大数据编程语言 Scala 秘籍 大数据编程语言 Scala 进阶篇 前言 为了能够深入学习大数据框架 Spark 和 Fink ...
最新文章
- android phone驱动_一文带你掌握 Android 系统架构
- Mex文件在VS2010中调试方法
- 【转】Java MySQL数据类型对照
- 利用python实现批量查询ip地址归属地址
- CentOS 6.5下利用Rsyslog+LogAnalyzer+MySQL部署日志服务器
- 深度linux不能联网,Deepin Linux 无法上网
- 一、公安备案与经营性备案
- ubuntu下Xmodmap映射Esc和Ctrl_L
- 在线网上书店管理系统
- Otsu阈值分割详解
- c++ 制作蠕虫病毒
- 金士顿u盘写保护修复教程
- Metasploit2: tcp port 139/445 – Samba smbd
- laravel异常前后端独立返回 阿星小栈
- 如何安装一个虚拟机?(简单15步,安装VMware16.1.1详细教程)
- 心灵鸡汤1------让人奋进的五句话
- python对文本文件的读写
- python 报错'tuple' object does not support item assignment
- 改版后的PMP值得考吗?
- 这些年,被“颠覆性创新”的五大行业