Scala 学习(七)--- 类
来源:互联网 发布:java 泛型类 编辑:程序博客网 时间:2024/05/16 06:34
A. 类的定义
Scala中,类并不用声明为public
Scala源文件中可以包含多个类,所有这些类都具有公有可见性
val修饰的变量具有只读属性,有getter但没有setter方法,相当于java中的final修饰的变量
var修饰的变量既有getter,又有setter方法
类私有字段,即private修饰的变量,只能够在类的内部以及伴生对象中使用
- 对象私有字段,即private[this]修饰的变量,访问权限更加严格,只能在类的内部中使用
class Person { val id = "9527" //用val修饰的变量是只读属性,有getter但没有setter,相当于java中的final修饰的变量 var age = 18 //用var修饰的变量既有getter又有setter private var name = "唐伯虎" //类私有字段,只能在类的内部以及伴生对象中使用 private[this] val pet = "小强" //对象私有字段,访问权限更加严格,只能在类的内部方法中使用 def printPet: Unit = { print(pet) }}object Person { def main(args: Array[String]): Unit = { val p = new Person println(p.id + " " + p.age + " " + p.name) p.age = 20 p.name = "祝枝山" println(p.id + " " + p.age + " " + p.name) p.printPet }}
B. 构造器
主构造器会执行类定义中的所有语句,如果有函数,函数仅仅被加载,并函数不会被执行
每个类都有主构造器,主构造器中的参数直接放在类名后面,与类交织在一起
class Animal(val id: String, var name: String) { println("id: " + id + ", name: " + name) //主构造器会执行类定义中的所有语句 def sayHi(): Unit = { //函数仅仅被加载,不会被执行,除非被调用 println("hi..." + name) }}object Animal { def main(args: Array[String]): Unit = { val a = new Animal("01", "dog") }}
3. 主构造器中参数如果不带有val,var修饰,则该参数为对象私有化字段,等同于private[this] val修饰的字段4. 辅助构造器中参数不能用val, var修饰5. 先调用主构造器,再调用辅助构造器,意味着每次先执行类中定义的所有语句,再执行辅助构造器
class Animal(val id: String, var name: String, gender: String) { print("id: " + id + ", name: " + name + ", ") //主构造器会执行类定义中的所有语句 println("gender: " + gender) //只能在类中访问gender// gender = "f" //报错,Reassignment to val:说明gender被val修饰 var age: Int = -1 def this(id: String, name: String, gender: String, age: Int) { this(id, name, gender) this.age = age println("age: " + age) } println("age: " + age)}object Animal { def main(args: Array[String]): Unit = { val a = new Animal("01", "dog", "m") val a2 = new Animal("02", "cat", "f", 2) //先调主构造器,再调辅助构造器,导致每次都能将age输出为-1// a.gender //报错,Cannot resolve symbol gender:伴生对象都不能访问,说明gender被private[this]修饰 }}
0 0
- Scala 学习(七)--- 类
- scala学习笔记(七) 继承
- scala学习笔记(七)
- Scala学习七:数组
- scala学习七:scala的高级特性
- [Scala]Scala学习笔记七 正则表达式
- Scala学习笔记(七) - 继承
- scala学习七 package相关
- Scala学习笔记(七) - 继承
- Scala学习笔记(七) - 继承
- Scala学习笔记(七)----Option
- Scala练习(七)
- Scala学习回顾(七)---- 抽象类、抽象字段、抽象方法
- scala 学习(七)——参数传递
- Scala学习(七)---包和引入
- Scala基础教程(七):类和对象、特征
- Scala基础入门(七)方法、类、对象详解
- 一天一段scala代码(七)
- 使用Autofac实现MVC、WebApi的注入
- 系统架构中的同步概念:一张图看到这两个模式集成,处理访问同步
- I2C总线
- TensorFlow的使用教程与案例
- Weex 环境安装小结 1
- Scala 学习(七)--- 类
- c# Marshal使用
- Mathematica 技术领域2
- JS中 splice() ,join() , split()方法解析
- 四、stpringMVC
- phpstorm10.0.1 最新注册
- ASM ClassReader failed to parse class file的问题解决
- express+session实现简易身份认证
- Opencv结构与内容