寒假学习记录7_Scala面向对象编程基础2

我的学习笔记如下:

16、在Scala中,整个类的定义主体就是类的构造器,称为主构造器,所有位于类方法以外的语句都将在构造过程中被执行。

17、可以像定义方法参数一样,在类名之后用圆括号列出主构造器的参数列表。

例:

class Test (name:String){

...

def info():Unit = {printf(“Name:%S”,name)}

}

18、除了主构造器,Scala还可以包含零个或多个辅助构造器。

19、辅助构造器使用this进行定义,this的返回类型为Unit。

20、每个辅助构造器的第一个表达式必须是调用一个此前已经定义的辅助构造器或主构造器,调用的形式为“this (参数列表)”。

21、与类方法参数不同的是,主构造器的参数前可以使用val或var关键字。此时Scala内部将自动为这些参数创建私有字段。

22、如果参数是用val关键字声明,则只会生成读方法,而不会生成写方法。

22、如果不希望将构造器参数成为类的字段,只需要省略关键字var或者val,在这种情况下,构造器参数在构造器退出后将被丢弃,对用户不再可见。

23、Scala采用单例对象来实现与Java静态成员同样的功能。

24、单例对象的定义与类定义类似,只是用object关键字替换了class关键字。

25、可以直接通过名字使用单例对象,就像使用一个普通的类实例一样。

25、当单例对象与同文件中的某个类具有相同的名称时,它被称为这个类的“伴生对象”,相应的类被称为这个单例对象的“伴生类”。它们之间可以相互访问对方的私有成员。

26、没有同名类的单例对象被称为孤立对象。例如,Scala程序的入口点main方法就是定义在一个孤立对象里。

27、单例对象的定义不能带有参数列表。

28、对于包含了伴生类和伴生对象定义的代码文件,不能直接在Scala REPL 中使用“:load”命令来执行。需要首先使用scalac命令进行编译,然后再使用scala命令来运行。

29、在Scala中,apply方法遵循如下的约定被调用:用括号传递给类实例或对象名一个或多个参数时,Scala会在相应的类或对象中查找名为apply且参数列表与传入的参数一致的方法,并用传入的参数来调用该apply方法。

30、与apply方法类似的update方法也遵循着相应的调用约定:当对带有括号并包含一到若干参数的对象进行赋值时,编译器将调用对象的update方法,并将括号里的参数和等号右边的值一起作为update方法的输入参数来执行调用。

posted on 2020-02-07 20:18  丸za  阅读(102)  评论(0)    收藏  举报

导航