Scala 面向对象知识点总结
一、类
1.一个源文件中可以包含多个类,都可以是public级别的,不用声明public。
2.类可以通过new来进行实例化,并访问类中的方法和变量。
3.类的继承:
Scala继承一个基类跟Java很相似, 需要注意以下几点:
(1).重写一个非抽象方法必须使用override修饰符。
(2).只有主构造函数才可以往基类的构造函数里写参数。
(3).在子类中重写超类的抽象方法时,你不需要使用override关键字。
(4).重写字段:override val,override var
二、包
与java中类似,使用的时候要引入相关包。
三、访问权限控制
(1)私有成员:private的成员仅在包含了成员定义的类或对象内部可见(java允许外部类访问其内部类的私有成员)
scala: java:
(2)保护成员:protected成员只在成员的类的子类中可以被访问(对比java,还是比java严格; java 继承或者同包可以访问)
相同包下,不是子类也不可以访问protected方法
(3) 伴生类和伴生对象可以互相访问彼此的私有成员
四、Case Class
案例类 case class(在做模式匹配的时候很重要)
例子来自《菜鸟教程》
五、Abstract class 抽象类
声明抽象方法不需要加abstract关键字,只需要不写方法体
子类重写父类的抽象方法时不需要加override
父类可以声明抽象字段(没有初始值的字段)
子类重写父类的抽象字段时不需要加override
六、特质
详细看下面博文:
Scala特质(Trait)
https://blog.****.net/hehe_soft_engineer/article/details/103226250
七、自身类型(自身类型的特殊形式)
当特质扩展类时编译器能够确保所有混入该特质的类都以这个类为超类
为了起到和混入的这个超类特质一样的效果,可以使用自身类型
this:Engine=>就是自身类型声明。
这告诉编译器,所有继承Car的具体类必须同时也是一个Engine
例子来自: https://blog.****.net/bluishglc/article/details/60739183
八、多重继承的机制
Scala是通过类的全序化(Class Linearization)实现,或称作类的线性化,具体内容在博文中有详细介绍。
https://blog.****.net/hehe_soft_engineer/article/details/103226250