开发者学堂课程【Scala 核心编程-基础:Scala 的继承注意事项】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/609/detail/8970
Scala 的继承注意事项
目录
一、Scala 继承给编程带来的便利
二、Scala 子类的继承
一、Scala 继承给编程带来的便利
1.提高了代码的复用性
2.提高了代码的扩展性和维护性
如果面试官问为什么继承提高了代码的扩展性和维护性
(1)示例
因为想要图示的线上范围内(A 类,B 类 ,E 类)有方法,就只需要在 A 类添加一个方法。如果只需要 B 类和 E 类有方法,就只需要在 B 类添加方法。
这样的话,写一段代码,对于的线就拥有了相应的方法和属性,所以就说明维护性很高。
(2)说明
当我们修改父类时,对应的子类就会拥有相应的方法和属性。
二、Scala 子类的继承
1.Scala 子类继承了什么?怎么继承了?
子类继承了所有的属性,只是私有的属性不能直接访问,想要通过公共的方法去访问。【debug 代码验证可以看见】。子类可以把父类的东西都继承。
2.代码说明
package com.atguigu.chapter07.myextends
//说明
//1.在 scala 中,子类继承了父类的所有属性
//2.但是 private 的属性和方法无法访问
object Extends02 {
def main(args:Array[String]):Unit = {
val sub = new Sub()
sub.sayOk()
}
}
//父类(基类)
class Base {
var n1:Int = 1 //public n1(),public n1_$eq()
protected var n2:Int = 2
private var n3:Int = 3
//也是生成 private n3(),private n3_$eq()方法,但是是持久的
//这里 private 拿不到 n3
//写了三个方法
//def 默认的
//protected 方法
//private 方法
def test100():Unit = {
//默认 public test100()
println("base 100")
}
protected def test200():Unit = { //?
println("base 200")
}
private def test300():Unit = {
//private(这里应用 private,所以代码下面就可以得出 test300())
println("base 300")
}
}
//Sub 继承了 Base
class Sub extends Base {
def sayOk(): Unit = {
this.n1 = 20
//这里访问本质 this.n1_$eq()
this.n2 = 40
//this.n3 = 90
//因为上面 private 拿不到 n3,所以这里是无效的
println("范围”+this.n1 this.n2)
//演示前面的三个方法
test100()
//代码上面的 public 可以继承下来
test200()
//是没有问题的
//test300()
//test300()
-演示问题(不可获取)
}
}
点击 Debug
可以看见一个控制台
点开 sub,可以看见 n1、n2、n3都有,而且可以清晰的看见 n1 = 1、n2 = 2、n3 = 3前面直接有一个 f
运行
点击类,myextends 里面有很多 class
点开 Base.class
点开之后可以看见底层有 public