1、代码如下:

[java]  view plain copy print ?
  1. package com.yy.oop
  2. /**
  3. * 伴生类和伴生对象
  4. * class Student是伴生对象Object Student的伴生类
  5. * object Student是伴生类class Student的伴生对象
  6. */
  7. //伴生类
  8. class Student(var name:String,var address:String){
  9. private var phone="110"
  10. //直接访问伴生对象的私有成员
  11. def infoCompObj() = println("伴生类中访问伴生对象:" + Student.sno)
  12. }
  13. //伴生对象
  14. object Student {
  15. private var sno:Int = 100
  16. def incrementSno()={
  17. sno += 1 //加1
  18. sno  //返回sno
  19. }
  20. def main(args: Array[String]): Unit = {
  21. println("单例对象:" + Student.incrementSno()) //单例对象
  22. //实例化伴生类
  23. val obj = new Student("yy","bj")
  24. obj.infoCompObj();
  25. }
  26. }

2、结果如下

[plain]  view plain copy print ?
  1. 单例对象:101
  2. 伴生类中访问伴生对象:101

3、scala apply

[java]  view plain copy print ?
  1. package com.yy.oop
  2. /**
  3. * 伴生类和伴生对象
  4. * class Student是伴生对象Object Student的伴生类
  5. * object Student是伴生类class Student的伴生对象
  6. */
  7. //伴生类
  8. class Student(var name:String,var address:String){
  9. private var phone="110"
  10. //直接访问伴生对象的私有成员
  11. def infoCompObj() = println("伴生类中访问伴生对象:" + Student.sno)
  12. }
  13. //伴生对象
  14. object Student {
  15. private var sno:Int = 100
  16. def incrementSno()={
  17. sno += 1 //加1
  18. sno  //返回sno
  19. }
  20. //定义apply方法,实例化伴生类
  21. def apply(name1:String,address1:String)= new Student(name1,address1)
  22. def main(args: Array[String]): Unit = {
  23. println("单例对象:" + Student.incrementSno()) //单例对象
  24. //实例化伴生类
  25. val obj = new Student("yy","bj")
  26. obj.infoCompObj();
  27. println("通过伴生对象的apply方法访问伴生类成员:")
  28. val obj2 = Student("yy_apply","bj_apply") //实际是通过apply方法进行了对象实例化,避免了手动new对象
  29. println(obj2.name)
  30. println(obj2.address)
  31. }
  32. }

结果如下:

[plain]  view plain copy print ?
  1. 单例对象:101
  2. 伴生类中访问伴生对象:101
  3. 通过伴生对象的apply方法访问伴生类成员:
  4. yy_apply
  5. bj_apply

scala中的伴生类 伴生对象说明相关推荐

  1. 类中定义自身类的对象

    在C++的类定义中,是不能够在类中定义自身类的对象的,但是可以定义自身类的指针对象和引用. class A { public:  A ()  {   cout<<"Constru ...

  2. android socket 发送byte_如何正确地创建和销毁网络通讯程序中的Socket类的对象实例...

    软件项目实训及课程设计指导--如何正确地创建和销毁软件应用系统中网络通讯中的Socket类的对象实例 1.基于TCP/IP协议的Socket通信相关的基础知识 (1)TCP/IP(Transmissi ...

  3. 【无标题】Scala 中的伴生类 - 伴生对象

    object TT {def main(args: Array[String]): Unit = {val clerk = new Clerkclerk.showInfo()Clerk.test(cl ...

  4. scala 主构造函数_在Scala中,如何在类的主构造函数中定义局部参数?

    在Scala中,如何在不是数据成员的类的主构造函数中定义局部参数,例如,仅用于初始化基类中的数据成员? 例如,在下面的代码中,如何在B类的主构造函数中正确定义参数b,以便它只生成临时本地参数而不是数据 ...

  5. QT之在QML中使用C++类和对象的两种方式

    一 类的方式实现在QML中使用C++对象 二 对象的方式实现在QML中使用C++对象 QML其实是对ECMAScript的扩展,融合了Qt object系统,它是一种新的解释性语言,QML引擎虽然由Q ...

  6. JS 函数中的 arguments 类数组对象

    1. arguments 介绍 2. arguments 转为数组 3. 箭头函数中没有 arguments 1. arguments 介绍 众所周知,js 是一门非常灵活的语言.当我们在 js 中调 ...

  7. scala中json与case class对象的转换, spark读取es json转换成case class

    ilinux_one scala中json与对象的转换 遇到的问题 因为要把spark从es读出来的json数据转换为对象,开始想用case class定义类型,通过fastjson做转换.如下 复制 ...

  8. python中的(类和对象)1.5万字学习笔记

    类和对象 面向对象的概述 对象 类 面向向对象程序设计的特点 类的定义和使用 魔术方法 创建类的成员并访问 访问限制(也可以说是私有成员和公有成员) 属性 创建用于计算的属性 为属性添加安全保护机制 ...

  9. scala中的构造方法和伴生对象

最新文章

  1. jQuery zTree几种常用的使用方式
  2. Android初学者教程
  3. PHP标量类型中整型类型的,PHP数据类型概述
  4. 阿里云ECS部署node.js及防火墙80端口开启
  5. antd table 时间搜索_antd table按表格里的日期去排序操作
  6. 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(HDU-2191)
  7. HDFS源码分析DataXceiver之整体流程
  8. IPv6协议漏洞将威胁核心路由器安全
  9. SQL笛卡尔积查询的典型应用
  10. Kmeans聚类算法应用实战
  11. oracle kup04040,ORA-20011 ORA-29913 and ORA-29400错误的说明
  12. java编程思想之并发(线程之间的协作)
  13. c语言时间换算结构体9,C语言实现时区转换函数的实例
  14. 漫画 | 阿姨,我不想努力了~
  15. Windows Print Spooler远程代码执行漏洞复现(CVE-2021-1675)
  16. 浩辰CAD机械 2021,正式发布!
  17. disallow root login remotely 不起作用?
  18. MySQL实战演练——如何才能构建逾期用户画像?【数据可视化】
  19. kettle连接数据库报错:Error connecting to database: (using class org.gjt.mm.mysql.Driver) Could not create
  20. scratch教程----5.特效的制作

热门文章

  1. 【雕爷学编程】Arduino动手做(142)---GY-25串口倾斜度模块
  2. 解决Selenium WebDriver 加载页面时出现浏览器闪退
  3. Odoo看板视图实践案例
  4. 最新!超10多所高校明确不再为全部研究生提供宿舍!
  5. 正月初二,大鹏杨梅坑之旅
  6. 定义一个函数,输入三角形的三条边,求三角形面积
  7. 使用Lame库实现wav、pcm转mp3
  8. java加权区间调度_区间调度问题详解
  9. 网站seo,添加关键词和描述
  10. 手把手教你打包一个自己的Vivado IP核