Scala面向对象彻底精通及Spark源码阅读

不传参数可以不加括号
getter setter

自定义

class Person{
    private var myName  = "Flink"
    def name = this.myName
    def name_= (newName : String){  //不能有空格
        myName = newName
        println("Hi: " + myName)
    }
}

val rocky = new Person

rocky.name
rocky.name = "Spark" //setter 调用 name_

在Scala中,如果程序中给变量或方法前面定义了private,那么scala会给这个变量或方法自动生成private的get和set方法,
如果程序中没有给变量或方法前面定义了private,那么scala会给这个变量或方法自动生成public的get和set方法。

private[this]

对象私有,只能这个对象访问,其他对象无法调用

class Person{
    private[this]  name  = "Flink"

    def update(newName : String){  
        println("Hi: ")
    }

    def talk(p: Person) = {
        println("Hello "+ p.name)
    }
}

p1.talk(p2)  //erro 没有访问权限

构造器

重载上一级
默认构造器

class Person{
    println("Big Data!")   //默认构造器
     var name  = "Flink"
     var age  = 16

    def update(newName : String){  
        println("Hi: ")
    }

    def this(name: String){
        this()
        this.name = name
    }

    def this(name: String, age: Int){
        this(name)
        this.age = age
    }
}

Object

伴生对象
定义完类之后,一般会定义一个同名的object,它用于存放静态的成员或者方法,当我们第一次调用这个伴生对象时,它会执行object的构造方法,只是这个构造方法是不接受参数的
静态方法 构造器只调用一次
同一文件定义

trait

trait:特质 存放工具方法

你可能感兴趣的:(scala,spark)