开发者学堂课程【Scala 核心编程-基础:类的层级关系和作业布置】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/609/detail/8982
类的层级关系和作业布置
目录:
一、继承的层级关系图
二、继承层级图小结
三、课后习题
一、继承的层级关系图
Any 是所有类的父类,分成两大类,anyval 和 anyref。刚才讲的一系列关于继承,封装,多态,讲的就是other Scala classes。在整个集合里面,java 这个类是可以用的。图里的实线表示一个继承的关系,虚线代表一个隐式转换的关系。整个图代表的是一个层级关系。
二、继承层级图小结
1. 在 Scala 中,所有其他类都是 AnyRef 的子类,类似 java 的 object。
2. Anyval 和 AnyRef 都扩展自 Any 类。Any 类是根节点。
3.Any 中定义了 isInstanceOf、asInstanceOf 方法,以及哈希方法等。
4.Null 类型的唯一实例就是 null 对象可以将 null 赋值给任何引用,但不能赋值给值类型的变量。
5.Nothing 类型没有实例。它对于泛型结构是有用处的,举例:空列表 Nil 的类型是 List[Nothing],它是List[T]的子类型,T 可以是任何类。
三、课后习题
1.编写 Computer 类,包含 CPU、内存,硬盘等属性,getDetails 方法用于返回 Computer 的详细信息
编写 PC 子类,继承 Computer 类,添加特有属性【品牌 brand】
编写 NotePad 子类,继承 Computer 类,添加特有属性【颜色 color】编写 Test Object,在 main 方法中创建PC和NotePad 对象,分别对象中特有的属性赋值,以及从 Computer 类继承的属性赋值,并使用方法并打印输出信息。
按照 Scala 的方式来将其搞定。
2.定义员工类 Embloyee,包含姓名和月工资,以及计算年工资 getAnnual 的方法。普通员工和经理要求分别重写getAnnal 方法。
测试类中添加一个方法 showEmpAnnal,实现获取任何员工对象的年工资,并在 main 方法中调用该方法。
测试类中添加一个方法,testWork 如果是普通员工,则调用 work 方法,如果是经理,则调用 manage方法【10min】
3. 根据图实现类。在 TestCylinder 类中创建 Cylinder 类的对象,设置圆柱的底面半径和高, 并输出圆柱的体积。
(1)Circle (圆)
-radius :Double
Circle():构造方法,将 radius 私有属性初始化为1+setRadius(radius: Double)
+getRadius()
+findArea() 计算圆的面积
(2)Cylinder (圆柱)
-length:Double
Cylinder():构造方法,将 Iength 属性初始化为1
+setLength(length: Double)
+getLength()
+findVolume()计算圆柱体积