《Scala编程基础》课件——第3章 面向对象高级特性.pptx
1.面向对象编程基础——类;学习目标;目录;类是OOP中最基本的概念,类是具有共同属性和行为的对象的抽象
类可以定义为数据和方法的集合
类也称为模板,因为它们提供了对象的基本框架
;在Java中,类的定义需遵循以下规则:
如果类是public,则必须和文件名一致。
一般一个.java文件中有一个public类
注意:Scala中没有public,一个.scala中可以写多个类。
;[修饰符]class类名{
类体
}
说明
(1)Scala语法中,类并不声明为public,所有这些类都具有公有可见性(即默认就是public)
(2)一个Scala源文件可以包含多个类;在一个.scala中定义两个类:
packagecom.test.chapter03
//(1)Scala语法中,类并不声明为public,所有这些类都具有公有可见性(即默认就是public)
classPerson{
}
//(2)一个Scala源文件可以包含多个类
classTeacher{
};1、基本语法
[修饰符]var|val属性名称[:类型]=属性值
注:Bean属性(@BeanPropetry),可以自动生成规范的setXxx/getXxx方法;属性是类的一个组成部分;Java的封装操作如下,
(1)将属性进行私有化
(2)提供一个公共的set方法,用于对属性赋值
(3)提供一个公共的get方法,用于获取属性的值;Scala中的public属性,底层实际为private,并通过get方法(obj.field())和set方法(obj.field_=(value))对其进行操作。
所以Scala并不推荐将属性设为private,再为其设置public的get和set方法的做法。但由于很多Java框架都利用反射调用getXXX和setXXX方法,有时候为了和这些框架兼容,也会为Scala的属性设置getXXX和setXXX方法(通过@BeanProperty注解实现)。;def方法名(参数列表)[:返回值类型]={
方法体
};2、实操案例;2.面向对象编程基础——抽象类;前言;Scala抽象类:学习目标;目录;抽象类的定义;抽象类的子类实现;抽象类的子类实现;抽象类的用途;3.面向对象编程基础——多态;Scala语言入门:学习目标;目录;多态:多态的定义;多态:多态的类型;Scala面向对象编程基础---多态:多态的实现机制;4.面向对象编程基础——特质;通过学习本节将能够了解特质定义,掌握特质声明方法,了解和掌握特质的基本语法,理解特质叠加。
通过本节学习可以:
理解???质含义
掌握特质声明方法
了解和掌握特质的基本语法
理解特质叠加
了解特质叠加顺序
;目录;1、简介;2、特质声明基本语法及实操;1、特质简介;2、特质基本语法;3、特质案例实操;3、特质案例实操;1、简介;1、简介;所谓的特质叠加,就是将混入的多个trait中的冲突方法叠加起来,案例如下:;1、特质叠加顺序;1、特质叠加顺序;结论:;1、特质自身类型说明和案例;1、特质和抽象类的区别;5.面向对象编程基础——包;前言;通过学习本节将能够了解包的定义,掌握包的使用和作用域,掌握包对象,学会import高级特性。
通过本节学习可以:
掌握包如何定义
掌握包的作用;目录;同Java中的包、C++中的命名空间一样,Scala中的包主要用于大型工程代码的组织,同时也解决命名冲突的问题。Scala中的包与Java有着诸多相似之处,但Scala语言中的包更加灵活。下面的代码给出了Scala包的定义:;图中左边是代码文件结构,右边是编译生成的字节码文件结构图;可以看出,Scala包的这种组织方式与Java包的组织方式没有明显区别。不过Scala包组织方式可以更灵活,例如:;上述代码可以在Scala程序中的任何地方出现,它表示在cn.scala.chapter08包中定义了一个类Teacher,定义完成后可以通过cn.scala.chapter08.Teacher在程序中其他任何地方使用该类。上述代码保存为Teacher.scala文件,放在Scala源文件的根目录下,编译完成如图:;从上面的代码不难看出,Scala可以灵活定义包并在该包中定义程序所需的类,帮我们自动组织生成的字节码文件。将上述Teacher.scala文件内容修改如下:;编译后生成的字节码文件结构如图:;包的定义;6.面向对象编程基础——泛型;通过学习本节将能够了解泛型基本语法,理解泛型协变和逆变含义,掌握泛型的基本使用方法,理解泛型上下限的作用。
通过本节学习可以:
理解协变和