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

本文介绍了Scala中如何为变量和方法自动生成get和set方法,详细解释了private和public的区别,同时展示了如何通过name_()方法进行setter操作。此外,文章还探讨了构造器的重载、对象私有访问和静态方法的构造过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值