【Scala】通过简洁代码搞明白伴生关系、主构造器和辅助构造器的关系
2024-10-09 06:42:05
/**
* 主构造器直接定义在类名称的后面,参数列表和类名写在一起
* 主构造器的参数会自动提升为对象的属性,不需要在对象中重新定义一遍
*/
class Student(val id: Int, name: String) {
println("主构造器开始执行")
//Student类的私有属性
private val city = "beijing"
//调用object Student的私有属性
def events() = println(Student.job + "在" + city)
var hobby: String = "basketball"
def sayHello = println("hello")
println("主构造器执行结束")
// 辅助构造器
def this(id: Int, name: String, hobby: String) {
//todo 辅助器的第一行必须调用主构造器或者其他已经存在的辅助构造器
this(id, name)
this.hobby = hobby
}
}
/**
* 如果有一个class文件,还有一个与class同名的object文件,那么就称这个object是class的伴生对象,class是object的伴生类
* 所以这里class Student就是object Student的伴生类,object Student就是class Student的伴生对象
*/
object Student {
//object Student的私有属性
private val job = "秃头侠"
def main(args: Array[String]): Unit = {
val zhangsan = new Student(1, "zhangsan")
zhangsan.sayHello
println("===============================")
val lisi = new Student(2, "lisi", "PC-Game")
lisi.sayHello
println("lisi的id为" + lisi.id + ",lisi的hobby为" + lisi.hobby)
println("===============================")
/**
* 1.伴生类和伴生对象必须存放在一个.scala文件中
* 2.伴生类和伴生对象的最大特点就是可以相互访问
*/
//调用class Student的私有属性
val student = new Student(3, "一拳超人")
student.events()
println(student.city + "有" + job)
}
}
控制台输出结果:
主构造器开始执行
主构造器执行结束
hello
===============================
主构造器开始执行
主构造器执行结束
hello
lisi的id为2,lisi的hobby为PC-Game
===============================
主构造器开始执行
主构造器执行结束
秃头侠在beijing
beijing有秃头侠
最新文章
- 利用Python进行数据分析(13) pandas基础: 数据重塑/轴向旋转
- title与alt的区别
- Yii2框架实现计数器功能
- 课程设计 --- 黑白棋中的 AI
- ubuntu同时安装qt4.8和qt5.7
- Java参数按值传递?按引用传递
- 网站性能优化之CSS无图片技术:三角形
- Keep the Customer Satisfied
- Flash型单片机的加密与解密
- 分享一个手机端好用的jquery ajax分页类
- OpenLayers访问WTMS服务及添加Googlemap
- ionic2环境搭建与hello word
- EWS 通过SubscribeToPullNotifications订阅Exchange新邮件提醒
- Web Uploader初始化隐藏容器失败及点击上传图片时反应较慢的问题
- Ubutun 16.04添加操作命令审计
- Java学习笔记二:数据类型II
- 使用自定义端口连接SQL Server 的方法
- 还没被玩坏的robobrowser(5)——Beautiful Soup的过滤器
- Confluence 6 使用 LDAP 授权连接一个内部目录 - 高级设置
- Nodejs开发人脸识别系统-教你实现高大上的人工智能