文档详情

《Scala编程基础》课件——第3章 面向对象高级特性.pptx

发布:2025-05-23约3.73千字共101页下载文档
文本预览下载声明

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.面向对象编程基础——泛型;通过学习本节将能够了解泛型基本语法,理解泛型协变和逆变含义,掌握泛型的基本使用方法,理解泛型上下限的作用。

通过本节学习可以:

理解协变和

显示全部
相似文档