scala中的伴生类 伴生对象说明
1、代码如下:
- package com.yy.oop
- /**
- * 伴生类和伴生对象
- * class Student是伴生对象Object Student的伴生类
- * object Student是伴生类class Student的伴生对象
- */
- //伴生类
- class Student(var name:String,var address:String){
- private var phone="110"
- //直接访问伴生对象的私有成员
- def infoCompObj() = println("伴生类中访问伴生对象:" + Student.sno)
- }
- //伴生对象
- object Student {
- private var sno:Int = 100
- def incrementSno()={
- sno += 1 //加1
- sno //返回sno
- }
- def main(args: Array[String]): Unit = {
- println("单例对象:" + Student.incrementSno()) //单例对象
- //实例化伴生类
- val obj = new Student("yy","bj")
- obj.infoCompObj();
- }
- }
2、结果如下
- 单例对象:101
- 伴生类中访问伴生对象:101
3、scala apply
- package com.yy.oop
- /**
- * 伴生类和伴生对象
- * class Student是伴生对象Object Student的伴生类
- * object Student是伴生类class Student的伴生对象
- */
- //伴生类
- class Student(var name:String,var address:String){
- private var phone="110"
- //直接访问伴生对象的私有成员
- def infoCompObj() = println("伴生类中访问伴生对象:" + Student.sno)
- }
- //伴生对象
- object Student {
- private var sno:Int = 100
- def incrementSno()={
- sno += 1 //加1
- sno //返回sno
- }
- //定义apply方法,实例化伴生类
- def apply(name1:String,address1:String)= new Student(name1,address1)
- def main(args: Array[String]): Unit = {
- println("单例对象:" + Student.incrementSno()) //单例对象
- //实例化伴生类
- val obj = new Student("yy","bj")
- obj.infoCompObj();
- println("通过伴生对象的apply方法访问伴生类成员:")
- val obj2 = Student("yy_apply","bj_apply") //实际是通过apply方法进行了对象实例化,避免了手动new对象
- println(obj2.name)
- println(obj2.address)
- }
- }
结果如下:
- 单例对象:101
- 伴生类中访问伴生对象:101
- 通过伴生对象的apply方法访问伴生类成员:
- yy_apply
- bj_apply
scala中的伴生类 伴生对象说明相关推荐
- 类中定义自身类的对象
在C++的类定义中,是不能够在类中定义自身类的对象的,但是可以定义自身类的指针对象和引用. class A { public: A () { cout<<"Constru ...
- android socket 发送byte_如何正确地创建和销毁网络通讯程序中的Socket类的对象实例...
软件项目实训及课程设计指导--如何正确地创建和销毁软件应用系统中网络通讯中的Socket类的对象实例 1.基于TCP/IP协议的Socket通信相关的基础知识 (1)TCP/IP(Transmissi ...
- 【无标题】Scala 中的伴生类 - 伴生对象
object TT {def main(args: Array[String]): Unit = {val clerk = new Clerkclerk.showInfo()Clerk.test(cl ...
- scala 主构造函数_在Scala中,如何在类的主构造函数中定义局部参数?
在Scala中,如何在不是数据成员的类的主构造函数中定义局部参数,例如,仅用于初始化基类中的数据成员? 例如,在下面的代码中,如何在B类的主构造函数中正确定义参数b,以便它只生成临时本地参数而不是数据 ...
- QT之在QML中使用C++类和对象的两种方式
一 类的方式实现在QML中使用C++对象 二 对象的方式实现在QML中使用C++对象 QML其实是对ECMAScript的扩展,融合了Qt object系统,它是一种新的解释性语言,QML引擎虽然由Q ...
- JS 函数中的 arguments 类数组对象
1. arguments 介绍 2. arguments 转为数组 3. 箭头函数中没有 arguments 1. arguments 介绍 众所周知,js 是一门非常灵活的语言.当我们在 js 中调 ...
- scala中json与case class对象的转换, spark读取es json转换成case class
ilinux_one scala中json与对象的转换 遇到的问题 因为要把spark从es读出来的json数据转换为对象,开始想用case class定义类型,通过fastjson做转换.如下 复制 ...
- python中的(类和对象)1.5万字学习笔记
类和对象 面向对象的概述 对象 类 面向向对象程序设计的特点 类的定义和使用 魔术方法 创建类的成员并访问 访问限制(也可以说是私有成员和公有成员) 属性 创建用于计算的属性 为属性添加安全保护机制 ...
- scala中的构造方法和伴生对象
最新文章
- jQuery zTree几种常用的使用方式
- Android初学者教程
- PHP标量类型中整型类型的,PHP数据类型概述
- 阿里云ECS部署node.js及防火墙80端口开启
- antd table 时间搜索_antd table按表格里的日期去排序操作
- 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(HDU-2191)
- HDFS源码分析DataXceiver之整体流程
- IPv6协议漏洞将威胁核心路由器安全
- SQL笛卡尔积查询的典型应用
- Kmeans聚类算法应用实战
- oracle kup04040,ORA-20011 ORA-29913 and ORA-29400错误的说明
- java编程思想之并发(线程之间的协作)
- c语言时间换算结构体9,C语言实现时区转换函数的实例
- 漫画 | 阿姨,我不想努力了~
- Windows Print Spooler远程代码执行漏洞复现(CVE-2021-1675)
- 浩辰CAD机械 2021,正式发布!
- disallow root login remotely 不起作用?
- MySQL实战演练——如何才能构建逾期用户画像?【数据可视化】
- kettle连接数据库报错:Error connecting to database: (using class org.gjt.mm.mysql.Driver) Could not create
- scratch教程----5.特效的制作