不传参数可以不加括号
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:特质 存放工具方法