【scala 的类】Scala的类:变量/方法/构造方法/继承
来源:互联网 发布:dwg mac 免费 编辑:程序博客网 时间:2024/06/18 17:44
package DataStructureAndAlgorithm/** * Created by Administrator on 2017/12/23. */// 1. 声明类 和 getter/setter 方法class Person{ // name为变量,不设置初始值 _ 代表前面的name变量 // var 会生成 getter和setter 方法 var name: String = _ // age为常量,不可变 // val 只会生成 getter方法 val age = 10 // private 私有变量,只能在class内部使用 private[this] val gender = "male"}// 2. 构造函数( primary constructor & auxiliary constructor)// 主构造方法 & 附属构造器/*1. 主构造器直接跟在类名后面, 主构造器中的参数,最后会被编译成字段2. 主构造器执行的时候, 会执行类中的所有语句3. 假设参数声明的时候不带val和var, name就相当于 private[this], 只能在class内部调用 !!!*/class Person2(var name: String, val age: Int) { // primary 初级的 constructor 构造器 println("this is the primary constructor!") var gender: String = _ val school: String = "ZJU" /* * 1. 附属构造器名称为this * 2. 每一个附属构造器必须首先调用已经存在的子构造器和附属构造器 */ def this(name: String, age: Int, gender: String){ this(name, age) this.gender = gender }}// 3. 继承( extends )/ 重写父类方法( override def) / 重写字段( override val / override var )// 不过: override var 测试发现编译不通过class Student(name: String, age: Int, val major: String) extends Person2(name, age){ println("this is the subclass of Person, major is: " + major) override val school: String = "Bzz" // 子类覆盖父类的方法/变量 一定要用: override override def toString = "Override toString ..."}object Test11ScalaClass { def main(args: Array[String]) { val p = new Person //括号可省略 p.name = "Jack" println(p.name + ": " + p.age) val p2= new Person2("Jack", 20) println(p2.name + ":" + p2.age) val p3= new Person2("Jack", 20, "male") println(p3.name + ":" + p3.age + ":" + p3.gender) val s= new Student("Jack", 20, "male") // 加载顺序: 先加载 父类,然后加载 子类 println(s.name + ":" + s.age + ":" + s.major + ":" + s.school) }}
运行结果:
Jack: 10this is the primary constructor!Jack:20this is the primary constructor!Jack:20:malethis is the primary constructor!this is the subclass of Person, major is: maleJack:20:male:BzzProcess finished with exit code 0
阅读全文
1 0
- 【scala 的类】Scala的类:变量/方法/构造方法/继承
- Scala学习回顾(六)---- Scala中的继承:超类的构造、重写字段、重写方法
- scala学习-Scala class的构造方法与继承
- Scala 深入浅出实战经典 第12讲:Scala中的继承:超类的构造、重写字段、重写方法代码实战
- Scala学习第十二天 Scala中的继承:超类的构造、重写字段、重写方法代码实战
- Scala中的继承:超类的构造、重写字段、重写方法
- 12.Scala中的继承:超类的构造、重写字段、重写方法代码实战
- Scala 类的继承
- Dt大数据梦工厂王家林老师 Scala实战详解之第12讲 Scala中的继承:超类的构造、重写字段、重写方法代码实战
- scala的 apply方法
- Scala的apply方法
- Scala类的定义,主/辅构造器,以及方法中的变量定义,单例对象,伴生对象,Apply方法调用,应用程序对象
- scala(5)-scala方法的定义方式
- scala 常量、变量、方法、类的定义(与java的不同)
- 【Scala】Scala的类层级
- scala 类定义构造函数与继承
- Scala的无参方法
- scala神奇的sortBy方法
- 每天一道LeetCode-----对表达式添加括号并求值,返回所有可能的计算结果
- VS2015设置头文件搜索路径
- windows核心编程---未处理异常,向量化异常处理与C++异常
- HTTP请求报文和HTTP响应报文
- 开源ETL工具kettle系列之常见问题
- 【scala 的类】Scala的类:变量/方法/构造方法/继承
- 最新阿里短信配置
- zzb多线程
- 刘强东居然哭穷?来聊聊你被哪些大佬的金句扎过心!
- 类容器隔离组件源码浅析
- Dcloud mui 获取table tr的td值
- 理解指针,*p,p=&c
- js基础知识总结
- linux添加sudo权限