Scala学习八之类简单学习了解

如同java中,如果要运行一个程序,必须编写一个包含main方法类一样;在scala中,如果要运 行一个应用程序,必须有一个main方法,作为入口;

scala中的main方法定义为def main(args: Array[String]),而且必须定义在object中。

Scala学习八之类简单学习了解

如果要运行上述代码,需要将其放入.scala文件,然后先使用scalac编译,再用scala执行

Scala学习八之类简单学习了解

面向对象:

Scala学习八之类简单学习了解


Scala学习八之类简单学习了解

object

对象,为了解决scala中class中不能存在static关键字的问题:直白讲,object对象在jvm中只存在一份,object中所有属性和方法都是静态的,类似java中的static修饰

写一个简单的类

Scala学习八之类简单学习了解

调用

Scala学习八之类简单学习了解

在Java和Scala中,管理项目可以使用包结构,C和C#使用命名空间。

对于package

可以创建下面的形式

Scala学习八之类简单学习了解

等同于下面的形式

Scala学习八之类简单学习了解

还可以写成下面的形式

Scala学习八之类简单学习了解

在test和test.pkg和test.pkg.wzy包下面分别建类

Test包下面

Scala学习八之类简单学习了解

test.pkg包下面

Scala学习八之类简单学习了解

test.pkg.wzy下面

Scala学习八之类简单学习了解

在test.pkg.wzy.pkgtest新建一个允许Object

Scala学习八之类简单学习了解

这种形式里test.pkg的成员在这里不可见,pkgtest包在test.pkg.wzy中,只能对wzy包有访问权限,不能访问上一层,包是没有继承关系的,但是位于文件顶部不带花括号的包声明在整个文件范围内有效

Scala学习八之类简单学习了解


作用域:可以放到属性、方法、class、object、trait上,定义的时候,放在对应的关键字之前即可

public:默认,不需要写出来

protected:和Java一样,但Scala不推荐使用

private:和java功能一模一样,class是私有访问,只能在当前的class中进行访问

private[this/class名称/包名称] : 在private的基础上做了一个限制,

this:表示只有当前对象可用

Scala学习八之类简单学习了解

class的构造函数:主构造函数、辅助构造函数

主构造函数

1.默认有一个无参数的主构造函数

2.主构造函数位于class名称后的一个定义(就是函数的参数输入列表)+ 函数体内可执行的所有代码

Scala学习八之类简单学习了解

调用

Scala学习八之类简单学习了解

主构造函数可以加参数,主构造函数中定义的输入参数,最终是作为class的属性存在,并且修饰符为public val;可以将其修改为其他修饰符

Scala学习八之类简单学习了解

参数可以给定默认值

Scala学习八之类简单学习了解

辅助构造函数(可以写多个辅助构造函数)

1.以this为函数名称的函数就叫做辅助构造函数

2.辅助构造函数不能有返回值

3.辅助构造函数的第一行必须调用主构造函数或者定义在他之前的辅助构造函数

注意:主构造函数和辅助构造函数的参数不能一样

Scala学习八之类简单学习了解

对象构建初始化的过程:基本和java一样

var p : Person = new Person("小倩",20)

1) 加载类的信息(属性信息,方法信息)

2) 在内存中(堆)开辟空间

3) 使用父类的构造器(主和辅助)进行初始

4) 使用主构造器对属性进行初始化 [age:90, name null]

5) 使用辅助构造器对属性进行初始化 [age:20, name小倩]

6) 将开辟的对象的地址赋给 p 这个引用


伴生对象和伴生类

定义:如果在一个Scala文件中,分别存在一个class和一个object,而且class和object的名称完全一样,那么这个class为object的伴生类,object为class的伴生对象

Scala学习八之类简单学习了解

作用:伴生类和伴生对象之间可以互相访问私有属性或者方法

Scala学习八之类简单学习了解

运行下

Scala学习八之类简单学习了解

apply方法

定义在object中表示提供一种快捷的对象创建方式,创建的对象就是apply方法返回的数据类型


Scala学习八之类简单学习了解

创建对象的调用方式就是object名称+apply函数的参数列表

Scala学习八之类简单学习了解

返回对象

Scala学习八之类简单学习了解

运行下

Scala学习八之类简单学习了解

Class和Object都有一个apply看调用是调用Object

Scala学习八之类简单学习了解

Scala学习八之类简单学习了解

调用

Scala学习八之类简单学习了解

定义在class中,表示提供一种快捷的数据获取方式,类似list集合数据获取方式 eg:list(0)

比如这个

Scala学习八之类简单学习了解

获取的方式

Scala学习八之类简单学习了解

update方法

只能定义在class中,表示提供一种便捷的数据更新/插入的方法,类似数组的更新eg:arr(0) = 100 ,

update函数中参数至少两个,参数列表的最后一个参数在调用的时候写在等号后面,其他写在等号前面

创建类

Scala学习八之类简单学习了解

Scala学习八之类简单学习了解

调用结果

Scala学习八之类简单学习了解


分享到:


相關文章: